function dffer_day(n, t) {
    var i = n.substring(5, n.lastIndexOf("-")), r = n.substring(n.length, n.lastIndexOf("-") + 1), u = n.substring(0, n.indexOf("-")), f = t.substring(5, t.lastIndexOf("-")), e = t.substring(t.length, t.lastIndexOf("-") + 1), o = t.substring(0, t.indexOf("-"));
    return (Date.parse(i + "/" + r + "/" + u) - Date.parse(f + "/" + e + "/" + o)) / 864e5
}
function string_to_date(n) {
    var t = Date.parse(n);
    return new Date(t)
}
function getEmailHost(n) {
    var i = n.split("@")[1], t = hash[i];
    return t || (t = "http://mail." + i), t
}
function ShowDialog(n, t, i, r) {
    var f, e, u;
    if (i || (i = 800), r || (r = 600), f = (window.screen.height - r) / 2, e = (window.screen.width - i) / 2, !t && ctx.isIE())
        u = document.getElementById("kefuA"), u.href = n, u.click();
    else
        try {
            window.showModelessDialog(n, window, "dialogHeight: " + r + "px; dialogWidth: " + i + "px;dialogTop: " + f + "; dialogLeft: " + e + "; resizable: yes; status: yes;scroll:no")
        } catch (o) {
            window.open(n, "_blank", "height=" + r + ", width=" + i + ", scrollbars=yes,resizable=1,modal=false,alwaysRaised=yes")
        }
}
function CalcRemainder(n, t) {
    for (var i = 1, r = t; parseInt(r) != r; )
        i *= 10, r = t * i;
    return n * i % r / i
}
function GetCountDownSum(n) {
    for (var i = 0, t = 1; t <= n; t++)
        i += t;
    return i
}
function ComputeCombinationsVariations(n, t) {
    var i = 0, r;
    if (t == 6) {
        if (n < 3)
            return 0;
        for (r = 1; r <= n - 2; r++)
            i += GetCountDownSum(r);
        return i * 6
    }
    return t == 3 ? n < 2 ? 0 : (i = GetCountDownSum(n - 1), i * 6) : t == 2 ? n < 2 ? 0 : (i = GetCountDownSum(n - 1), i * 2) : 0
}
function copy_to_clipboard(n) {
    var i, t, f;
    if (window.clipboardData)
        window.clipboardData.clearData(), window.clipboardData.setData("Text", n);
    else if (navigator.userAgent.indexOf("Opera") != -1)
        window.location = n;
    else if (window.netscape) {
        try {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
        } catch (o) {
            return alert("被浏览器拒绝！n请在浏览器地址栏输入' '并回车n然后将'signed.applets.codebase_principal_support'设置为'true'"), !1
        }
        if (i = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard), !i)
            return;
        if (t = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable), !t)
            return;
        t.addDataFlavor("text/unicode");
        var r = {}, e = {}, r = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString), u = n;
        if (r.data = u, t.setTransferData("text/unicode", r, u.length * 2), f = Components.interfaces.nsIClipboard, !i)
            return !1;
        i.setData(t, null, f.kGlobalClipboard)
    } else
        return alert("复制失败，请手动抄写号码。"), !1;
    alert("复制成功!")
}
function GetFormJson(n) {
    var t = {}, i = n.serializeArray();
    return $.each(i, function() {
        t[this.name] !== undefined ? (t[this.name].push || (t[this.name] = [t[this.name]]), t[this.name].push(this.value || "")) : t[this.name] = this.value || ""
    }), t
}
function EmailCheck(n) {
    if (n = n.trim(), n.length > 128 || n.length < 6)
        return alert("邮箱地址{0}不正确".replaceFormat([n])), !1;
    var t = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return (flag = t.test(n), !flag) ? (alert("邮箱地址{0}不正确".replaceFormat([n])), !1) : !0
}
function GetInfoFromTimeStamp(n, t) {
    var e = "", f = Math.floor(n / 864e5), o, u, s, i, h, r;
    return f = f < 10 ? "0" + f : f, o = n % 864e5, u = Math.floor(o / 36e5), u = u < 10 ? "0" + u : u, s = o % 36e5, i = Math.floor(s / 6e4), i = i < 10 ? "0" + i : i, h = s % 6e4, r = Math.round(h / 1e3), r = r < 10 ? "0" + r : r, e = f == "00" ? u == "00" ? t ? i + " : " + r : i + "分" + r + "秒" : t ? u + " : " + i + " : " + r : u + "时" + i + "分" + r + "秒" : t ? f + "天" + u + " : " + i + " : " + r : f + "天" + u + "时" + i + "分" + r + "秒"
}
function FormatNumber(n, r) {
    var f, u, e;
    for (n = n * 1, f = n >= 0 ? "" : "-", n = Math.abs(n), r = r >= 0 && r <= 20 ? r : 2, n = parseFloat((n + "").replace(/[^\d\.-]/g, "")).toFixed(r) + "", u = n.split(".")[0].split("").reverse(), e = n.split(".")[1], t = "", i = 0; i < u.length; i++)
        t += u[i] + ((i + 1) % 3 == 0 && i + 1 != u.length ? "," : "");
    return r == 0 ? f + t.split("").reverse().join("") : f + t.split("").reverse().join("") + "." + e
}
function GetReadInfoMinSeconds(n, t) {
    var i = n.length, r;
    return i < 5 ? 1e3 : i < 11 ? 2e3 : i < 18 ? 3e3 : i < 26 ? 4e3 : i < 35 ? 5e3 : (r = Math.ceil(i / 8) * 1e3, t && r > t) ? t : r
}
function NetToJsDateTime(str, format) {
    var dt = eval("new " + eval(str).source);
    return format ? dt.Format(format) : dt.Format("yyyy-MM-dd HH:mm:ss")
}
function TowLenNum(n) {
    return n < 10 ? "0" + n : "" + n
}
function ComStopBubble() {
    $.browser.msie ? window.event.cancelBubble = !0 : $.browser.mozilla ? arguments.callee.caller.arguments[0].stopPropagation() : event.stopPropagation()
}
function isNumber(n) {
    return typeof n == "number" && isFinite(n)
}
function isInt(n) {
    var t = /^[-\+]?\d+$/;
    return t.test(n)
}
function isNumber(n) {
    if (isInt(n))
        return !0;
    var t = /^[-\+]?\d+\.\d+$/;
    return t.test(n)
}
function GetIntRandomNum(n, t, i) {
    var e, r, u, f, o, s;
    for (i || (i = []), e = [], r = n; r <= t; r++)
        e.push(r);
    return (u = e.dive(i), f = u.length - 1, f < 0) ? n - 1 : f == 0 ? u[0] : (o = Math.random(), s = Math.round(Math.round(o * f)), u[s])
}
function deep_clone_obj(n) {
    var t, i;
    if (typeof n != "object" || n == null)
        return n;
    t = {};
    for (i in n)
        t[i] = clone_obj(n[i]);
    return t
}
function bind_select_control_value(n, t) {
    if (t !== "" && n)
        for (var i = 0; i < n.options.length; i++)
            if (n.options[i].value == t) {
                $(n.options[i]).attr("selected", !0);
                break
            }
}
function obj2jsonString(n) {
    var t = [], i;
    if (typeof n == "string")
        return '"' + n.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + '"';
    if (typeof n == "undefined")
        return "";
    if (typeof n == "object") {
        if (n === null)
            return "null";
        if (n.sort) {
            for (i = 0; i < n.length; i++)
                t.push(obj2jsonString(n[i]));
            t = "[" + t.join() + "]"
        } else {
            for (i in n)
                t.push('"' + i + '":' + obj2jsonString(n[i]));
            t = "{" + t.join() + "}"
        }
        return t
    }
    return n.toString()
}
function show_by_screen_height_center(n, t) {
    var u = $(window).scrollTop();
    if (u != 0 || !t) {
        var r = $(window).height(), f = n.height(), i = 0;
        r >= f && (i = parseInt((r - f) / 2)), i > r / 5 && (i = parseInt(r / 5)), i += u, n.css({top: i}), n.show()
    }
}
function substr_en_chi(n, t, i) {
    var u = /[^\x00-\xff]/g, f, r;
    if (n.replace(u, "mm").length > t)
        for (f = Math.floor(t / 2), r = f; r < n.length; r++)
            if (n.substr(0, r).replace(u, "mm").length >= t)
                return i ? n.substr(0, r) : n.substr(0, r) + "...";
    return n
}
function arg2arr(n, t) {
    return Array.prototype.slice.call(n, t || 0)
}
function htmlEncode(n) {
    return String(n).replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
}
function htmlUnEncode(n) {
    return String(n).replace(/&amp;/g, "&").replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&lt;/g, "<").replace(/&gt;/g, ">")
}
function getIsDebug() {
    try {
        return _isDebug
    } catch (n) {
        return !1
    }
}
function DivDrop() {
    $(".sign_up").mousedown(function(n) {
        $(this).css("cursor", "move");
        var t = $(this).offset(), i = n.pageX - t.left, r = n.pageY - t.top;
        $(document).bind("mousemove", function(n) {
            $(".sign_up").stop();
            var t = n.pageX - i, u = n.pageY - r;
            $(".sign_up").animate({left: t + "px",top: u + "px"}, 10)
        })
    }), $(document).mouseup(function() {
        $(".sign_up").css("cursor", "default"), $(this).unbind("mousemove")
    })
}
function unloadEveryTimeObjs() {
    jQuery.each(jQuery.timer.global, function(n, t) {
        jQuery.timer.remove(t)
    })
}
function ChangeCode() {
    $("#valiCode").attr("src", "index.php?ac=seccode&op=makecode&nchash=&t=" + +new Date)
}
var hash, ctx, ZeroClipboard, _alert;
(function(n, t) {
    function te(n) {
        var t = ii[n] = {};
        return i.each(n.split(l), function(n, i) {
            t[i] = !0
        }), t
    }
    function su(n, r, u) {
        if (u === t && n.nodeType === 1) {
            var f = "data-" + r.replace(ar, "-$1").toLowerCase();
            if (u = n.getAttribute(f), typeof u == "string") {
                try {
                    u = u === "true" ? !0 : u === "false" ? !1 : u === "null" ? null : +u + "" === u ? +u : sr.test(u) ? i.parseJSON(u) : u
                } catch (e) {
                }
                i.data(n, r, u)
            } else
                u = t
        }
        return u
    }
    function bt(n) {
        var t;
        for (t in n)
            if ((t !== "data" || !i.isEmptyObject(n[t])) && t !== "toJSON")
                return !1;
        return !0
    }
    function p() {
        return !1
    }
    function et() {
        return !0
    }
    function k(n) {
        return !n || !n.parentNode || n.parentNode.nodeType === 11
    }
    function ou(n, t) {
        do
            n = n[t];
        while (n && n.nodeType !== 1);
        return n
    }
    function eu(n, t, r) {
        if (t = t || 0, i.isFunction(t))
            return i.grep(n, function(n, i) {
                var u = !!t.call(n, i, n);
                return u === r
            });
        if (t.nodeType)
            return i.grep(n, function(n) {
                return n === t === r
            });
        if (typeof t == "string") {
            var u = i.grep(n, function(n) {
                return n.nodeType === 1
            });
            if (ge.test(t))
                return i.filter(t, u, !r);
            t = i.filter(t, u)
        }
        return i.grep(n, function(n) {
            return i.inArray(n, t) >= 0 === r
        })
    }
    function fu(n) {
        var i = vi.split("|"), t = n.createDocumentFragment();
        if (t.createElement)
            while (i.length)
                t.createElement(i.pop());
        return t
    }
    function pf(n, t) {
        return n.getElementsByTagName(t)[0] || n.appendChild(n.ownerDocument.createElement(t))
    }
    function uu(n, t) {
        if (t.nodeType === 1 && i.hasData(n)) {
            var u, f, o, s = i._data(n), r = i._data(t, s), e = s.events;
            if (e) {
                delete r.handle, r.events = {};
                for (u in e)
                    for (f = 0, o = e[u].length; f < o; f++)
                        i.event.add(t, u, e[u][f])
            }
            r.data && (r.data = i.extend({}, r.data))
        }
    }
    function ru(n, t) {
        var r;
        t.nodeType === 1 && (t.clearAttributes && t.clearAttributes(), t.mergeAttributes && t.mergeAttributes(n), r = t.nodeName.toLowerCase(), r === "object" ? (t.parentNode && (t.outerHTML = n.outerHTML), i.support.html5Clone && n.innerHTML && !i.trim(t.innerHTML) && (t.innerHTML = n.innerHTML)) : r === "input" && tr.test(n.type) ? (t.defaultChecked = t.checked = n.checked, t.value !== n.value && (t.value = n.value)) : r === "option" ? t.selected = n.defaultSelected : r === "input" || r === "textarea" ? t.defaultValue = n.defaultValue : r === "script" && t.text !== n.text && (t.text = n.text), t.removeAttribute(i.expando))
    }
    function ct(n) {
        return typeof n.getElementsByTagName != "undefined" ? n.getElementsByTagName("*") : typeof n.querySelectorAll != "undefined" ? n.querySelectorAll("*") : []
    }
    function iu(n) {
        tr.test(n.type) && (n.defaultChecked = n.checked)
    }
    function tu(n, t) {
        if (t in n)
            return t;
        for (var r = t.charAt(0).toUpperCase() + t.slice(1), u = t, i = er.length; i--; )
            if (t = er[i] + r, t in n)
                return t;
        return u
    }
    function lt(n, t) {
        return n = t || n, i.css(n, "display") === "none" || !i.contains(n.ownerDocument, n)
    }
    function nu(n, t) {
        for (var r, o, e = [], f = 0, s = n.length; f < s; f++)
            (r = n[f], r.style) && (e[f] = i._data(r, "olddisplay"), t ? (!e[f] && r.style.display === "none" && (r.style.display = ""), r.style.display === "" && lt(r) && (e[f] = i._data(r, "olddisplay", br(r.nodeName)))) : (o = u(r, "display"), !e[f] && o !== "none" && i._data(r, "olddisplay", o)));
        for (f = 0; f < s; f++)
            (r = n[f], r.style) && (t && r.style.display !== "none" && r.style.display !== "" || (r.style.display = t ? e[f] || "" : "none"));
        return n
    }
    function gr(n, t, i) {
        var r = fo.exec(t);
        return r ? Math.max(0, r[1] - (i || 0)) + (r[2] || "px") : t
    }
    function dr(n, t, r, f) {
        for (var e = r === (f ? "border" : "content") ? 4 : t === "width" ? 1 : 0, o = 0; e < 4; e += 2)
            r === "margin" && (o += i.css(n, r + a[e], !0)), f ? (r === "content" && (o -= parseFloat(u(n, "padding" + a[e])) || 0), r !== "margin" && (o -= parseFloat(u(n, "border" + a[e] + "Width")) || 0)) : (o += parseFloat(u(n, "padding" + a[e])) || 0, r !== "padding" && (o += parseFloat(u(n, "border" + a[e] + "Width")) || 0));
        return o
    }
    function kr(n, t, r) {
        var f = t === "width" ? n.offsetWidth : n.offsetHeight, e = !0, o = i.support.boxSizing && i.css(n, "boxSizing") === "border-box";
        if (f <= 0) {
            if (f = u(n, t), (f < 0 || f == null) && (f = n.style[t]), d.test(f))
                return f;
            e = o && (i.support.boxSizingReliable || f === n.style[t]), f = parseFloat(f) || 0
        }
        return f + dr(n, t, r || (o ? "border" : "content"), e) + "px"
    }
    function br(n) {
        if (ti[n])
            return ti[n];
        var f = i("<" + n + ">").appendTo(r.body), t = f.css("display");
        return f.remove(), (t === "none" || t === "") && (w = r.body.appendChild(w || i.extend(r.createElement("iframe"), {frameBorder: 0,width: 0,height: 0})), y && w.createElement || (y = (w.contentWindow || w.contentDocument).document, y.write("<!doctype html><html><body>"), y.close()), f = y.body.appendChild(y.createElement(n)), t = u(f, "display"), r.body.removeChild(w)), ti[n] = t, t
    }
    function gt(n, t, r, u) {
        var f;
        if (i.isArray(t))
            i.each(t, function(t, i) {
                r || fe.test(n) ? u(n, i) : gt(n + "[" + (typeof i == "object" ? t : "") + "]", i, r, u)
            });
        else if (r || i.type(t) !== "object")
            u(n, t);
        else
            for (f in t)
                gt(n + "[" + f + "]", t[f], r, u)
    }
    function wr(n) {
        return function(t, r) {
            typeof t != "string" && (r = t, t = "*");
            var u, o, f, s = t.toLowerCase().split(l), e = 0, h = s.length;
            if (i.isFunction(r))
                for (; e < h; e++)
                    u = s[e], f = /^\+/.test(u), f && (u = u.substr(1) || "*"), o = n[u] = n[u] || [], o[f ? "unshift" : "push"](r)
        }
    }
    function ot(n, i, r, u, f, e) {
        f = f || i.dataTypes[0], e = e || {}, e[f] = !0;
        for (var o, s = n[f], h = 0, l = s ? s.length : 0, c = n === ni; h < l && (c || !o); h++)
            o = s[h](i, r, u), typeof o == "string" && (!c || e[o] ? o = t : (i.dataTypes.unshift(o), o = ot(n, i, r, u, o, e)));
        return (c || !o) && !e["*"] && (o = ot(n, i, r, u, "*", e)), o
    }
    function pr(n, r) {
        var u, f, e = i.ajaxSettings.flatOptions || {};
        for (u in r)
            r[u] !== t && ((e[u] ? n : f || (f = {}))[u] = r[u]);
        f && i.extend(!0, n, f)
    }
    function ue(n, i, r) {
        var o, u, e, s, h = n.contents, f = n.dataTypes, c = n.responseFields;
        for (u in c)
            u in r && (i[c[u]] = r[u]);
        while (f[0] === "*")
            f.shift(), o === t && (o = n.mimeType || i.getResponseHeader("content-type"));
        if (o)
            for (u in h)
                if (h[u] && h[u].test(o)) {
                    f.unshift(u);
                    break
                }
        if (f[0] in r)
            e = f[0];
        else {
            for (u in r) {
                if (!f[0] || n.converters[u + " " + f[0]]) {
                    e = u;
                    break
                }
                s || (s = u)
            }
            e = e || s
        }
        if (e)
            return e !== f[0] && f.unshift(e), r[e]
    }
    function lo(n, t) {
        var i, o, r, e, s = n.dataTypes.slice(), f = s[0], u = {}, h = 0;
        if (n.dataFilter && (t = n.dataFilter(t, n.dataType)), s[1])
            for (i in n.converters)
                u[i.toLowerCase()] = n.converters[i];
        for (; r = s[++h]; )
            if (r !== "*") {
                if (f !== "*" && f !== r) {
                    if (i = u[f + " " + r] || u["* " + r], !i)
                        for (o in u)
                            if (e = o.split(" "), e[1] === r && (i = u[f + " " + e[0]] || u["* " + e[0]], i)) {
                                i === !0 ? i = u[o] : u[o] !== !0 && (r = e[0], s.splice(h--, 0, r));
                                break
                            }
                    if (i !== !0)
                        if (i && n.throws)
                            t = i(t);
                        else
                            try {
                                t = i(t)
                            } catch (c) {
                                return {state: "parsererror",error: i ? c : "No conversion from " + f + " to " + r}
                            }
                }
                f = r
            }
        return {state: "success",data: t}
    }
    function yr() {
        try {
            return new n.XMLHttpRequest
        } catch (t) {
        }
    }
    function co() {
        try {
            return new n.ActiveXObject("Microsoft.XMLHTTP")
        } catch (t) {
        }
    }
    function vr() {
        return setTimeout(function() {
            ft = t
        }, 0), ft = i.now()
    }
    function eo(n, t) {
        i.each(t, function(t, i) {
            for (var u = (b[t] || []).concat(b["*"]), r = 0, f = u.length; r < f; r++)
                if (u[r].call(n, t, i))
                    return
        })
    }
    function lu(n, t, r) {
        var e, o = 0, l = 0, c = tt.length, f = i.Deferred().always(function() {
            delete h.elem
        }), h = function() {
            for (var o = ft || vr(), t = Math.max(0, u.startTime + u.duration - o), i = 1 - (t / u.duration || 0), r = 0, e = u.tweens.length; r < e; r++)
                u.tweens[r].run(i);
            return f.notifyWith(n, [u, i, t]), i < 1 && e ? t : (f.resolveWith(n, [u]), !1)
        }, u = f.promise({elem: n,props: i.extend({}, t),opts: i.extend(!0, {specialEasing: {}}, r),originalProperties: t,originalOptions: r,startTime: ft || vr(),duration: r.duration,tweens: [],createTween: function(t, r) {
                var e = i.Tween(n, u.opts, t, r, u.opts.specialEasing[t] || u.opts.easing);
                return u.tweens.push(e), e
            },stop: function(t) {
                for (var i = 0, r = t ? u.tweens.length : 0; i < r; i++)
                    u.tweens[i].run(1);
                return t ? f.resolveWith(n, [u, t]) : f.rejectWith(n, [u, t]), this
            }}), s = u.props;
        for (to(s, u.opts.specialEasing); o < c; o++)
            if (e = tt[o].call(u, n, s, u.opts), e)
                return e;
        return eo(u, s), i.isFunction(u.opts.start) && u.opts.start.call(n, u), i.fx.timer(i.extend(h, {anim: u,queue: u.opts.queue,elem: n})), u.progress(u.opts.progress).done(u.opts.done, u.opts.complete).fail(u.opts.fail).always(u.opts.always)
    }
    function to(n, t) {
        var r, f, e, u, o;
        for (r in n)
            if (f = i.camelCase(r), e = t[f], u = n[r], i.isArray(u) && (e = u[1], u = n[r] = u[0]), r !== f && (n[f] = u, delete n[r]), o = i.cssHooks[f], o && "expand" in o) {
                u = o.expand(u), delete n[f];
                for (r in u)
                    r in n || (n[r] = u[r], t[r] = e)
            } else
                t[f] = e
    }
    function no(n, t, r) {
        var o, u, a, v, h, c, f, w, s = this, e = n.style, y = {}, p = [], l = n.nodeType && lt(n);
        r.queue || (f = i._queueHooks(n, "fx"), f.unqueued == null && (f.unqueued = 0, w = f.empty.fire, f.empty.fire = function() {
            f.unqueued || w()
        }), f.unqueued++, s.always(function() {
            s.always(function() {
                f.unqueued--, i.queue(n, "fx").length || f.empty.fire()
            })
        })), n.nodeType === 1 && ("height" in t || "width" in t) && (r.overflow = [e.overflow, e.overflowX, e.overflowY], i.css(n, "display") === "inline" && i.css(n, "float") === "none" && (!i.support.inlineBlockNeedsLayout || br(n.nodeName) === "inline" ? e.display = "inline-block" : e.zoom = 1)), r.overflow && (e.overflow = "hidden", i.support.shrinkWrapBlocks || s.done(function() {
            e.overflow = r.overflow[0], e.overflowX = r.overflow[1], e.overflowY = r.overflow[2]
        }));
        for (o in t)
            if (a = t[o], df.exec(a)) {
                if (delete t[o], a === (l ? "hide" : "show"))
                    continue;
                p.push(o)
            }
        if (v = p.length, v)
            for (h = i._data(n, "fxshow") || i._data(n, "fxshow", {}), l ? i(n).show() : s.done(function() {
                i(n).hide()
            }), s.done(function() {
                var t;
                i.removeData(n, "fxshow", !0);
                for (t in y)
                    i.style(n, t, y[t])
            }), o = 0; o < v; o++)
                u = p[o], c = s.createTween(u, l ? h[u] : 0), y[u] = h[u] || i.style(n, u), u in h || (h[u] = c.start, l && (c.end = c.start, c.start = u === "width" || u === "height" ? 1 : 0))
    }
    function f(n, t, i, r, u) {
        return new f.prototype.init(n, t, i, r, u)
    }
    function ut(n, t) {
        for (var r, i = {height: n}, u = 0; u < 4; u += 2 - t)
            r = a[u], i["margin" + r] = i["padding" + r] = n;
        return t && (i.opacity = i.width = n), i
    }
    function lr(n) {
        return i.isWindow(n) ? n : n.nodeType === 9 ? n.defaultView || n.parentWindow : !1
    }
    var cr, g, r = n.document, ke = n.location, be = n.navigator, we = n.jQuery, ve = n.$, hr = Array.prototype.push, o = Array.prototype.slice, hu = Array.prototype.indexOf, ee = Object.prototype.toString, wt = Object.prototype.hasOwnProperty, cu = String.prototype.trim, i = function(n, t) {
        return new i.fn.init(n, t, cr)
    }, it = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, au = /\S/, l = /\s+/, le = au.test(" ") ? /^[\s\xA0]+|[\s\xA0]+$/g : /^\s+|\s+$/g, de = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, yu = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, pu = /^[\],:{}\s]*$/, ef = /(?:^|:|,)(?:\s*\[)+/g, of = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, sf = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g, hf = /^-ms-/, bf = /-([\da-z])/gi, kf = function(n, t) {
        return (t + "").toUpperCase()
    }, rt = function() {
        r.addEventListener ? (r.removeEventListener("DOMContentLoaded", rt, !1), i.ready()) : r.readyState === "complete" && (r.detachEvent("onreadystatechange", rt), i.ready())
    }, vu = {}, ii, sr, ar, v, st, ui, vt;
    i.fn = i.prototype = {constructor: i,init: function(n, u, f) {
            var e, o, h, s;
            if (!n)
                return this;
            if (n.nodeType)
                return this.context = this[0] = n, this.length = 1, this;
            if (typeof n == "string") {
                if (e = n.charAt(0) === "<" && n.charAt(n.length - 1) === ">" && n.length >= 3 ? [null, n, null] : de.exec(n), e && (e[1] || !u)) {
                    if (e[1])
                        return u = u instanceof i ? u[0] : u, s = u && u.nodeType ? u.ownerDocument || u : r, n = i.parseHTML(e[1], s, !0), yu.test(e[1]) && i.isPlainObject(u) && this.attr.call(n, u, !0), i.merge(this, n);
                    if (o = r.getElementById(e[2]), o && o.parentNode) {
                        if (o.id !== e[2])
                            return f.find(n);
                        this.length = 1, this[0] = o
                    }
                    return this.context = r, this.selector = n, this
                }
                return !u || u.jquery ? (u || f).find(n) : this.constructor(u).find(n)
            }
            return i.isFunction(n) ? f.ready(n) : (n.selector !== t && (this.selector = n.selector, this.context = n.context), i.makeArray(n, this))
        },selector: "",jquery: "1.8.0",length: 0,size: function() {
            return this.length
        },toArray: function() {
            return o.call(this)
        },get: function(n) {
            return n == null ? this.toArray() : n < 0 ? this[this.length + n] : this[n]
        },pushStack: function(n, t, r) {
            var u = i.merge(this.constructor(), n);
            return u.prevObject = this, u.context = this.context, t === "find" ? u.selector = this.selector + (this.selector ? " " : "") + r : t && (u.selector = this.selector + "." + t + "(" + r + ")"), u
        },each: function(n, t) {
            return i.each(this, n, t)
        },ready: function(n) {
            return i.ready.promise().done(n), this
        },eq: function(n) {
            return n = +n, n === -1 ? this.slice(n) : this.slice(n, n + 1)
        },first: function() {
            return this.eq(0)
        },last: function() {
            return this.eq(-1)
        },slice: function() {
            return this.pushStack(o.apply(this, arguments), "slice", o.call(arguments).join(","))
        },map: function(n) {
            return this.pushStack(i.map(this, function(t, i) {
                return n.call(t, i, t)
            }))
        },end: function() {
            return this.prevObject || this.constructor(null)
        },push: hr,sort: [].sort,splice: [].splice}, i.fn.init.prototype = i.fn, i.extend = i.fn.extend = function() {
        var o, e, u, r, s, h, n = arguments[0] || {}, f = 1, l = arguments.length, c = !1;
        for (typeof n == "boolean" && (c = n, n = arguments[1] || {}, f = 2), typeof n != "object" && !i.isFunction(n) && (n = {}), l === f && (n = this, --f); f < l; f++)
            if ((o = arguments[f]) != null)
                for (e in o)
                    (u = n[e], r = o[e], n !== r) && (c && r && (i.isPlainObject(r) || (s = i.isArray(r))) ? (s ? (s = !1, h = u && i.isArray(u) ? u : []) : h = u && i.isPlainObject(u) ? u : {}, n[e] = i.extend(c, h, r)) : r !== t && (n[e] = r));
        return n
    }, i.extend({noConflict: function(t) {
            return n.$ === i && (n.$ = ve), t && n.jQuery === i && (n.jQuery = we), i
        },isReady: !1,readyWait: 1,holdReady: function(n) {
            n ? i.readyWait++ : i.ready(!0)
        },ready: function(n) {
            if (n === !0 ? !--i.readyWait : !i.isReady) {
                if (!r.body)
                    return setTimeout(i.ready, 1);
                (i.isReady = !0, n !== !0 && --i.readyWait > 0) || (g.resolveWith(r, [i]), i.fn.trigger && i(r).trigger("ready").off("ready"))
            }
        },isFunction: function(n) {
            return i.type(n) === "function"
        },isArray: Array.isArray || function(n) {
            return i.type(n) === "array"
        },isWindow: function(n) {
            return n != null && n == n.window
        },isNumeric: function(n) {
            return !isNaN(parseFloat(n)) && isFinite(n)
        },type: function(n) {
            return n == null ? String(n) : vu[ee.call(n)] || "object"
        },isPlainObject: function(n) {
            if (!n || i.type(n) !== "object" || n.nodeType || i.isWindow(n))
                return !1;
            try {
                if (n.constructor && !wt.call(n, "constructor") && !wt.call(n.constructor.prototype, "isPrototypeOf"))
                    return !1
            } catch (u) {
                return !1
            }
            var r;
            for (r in n)
                ;
            return r === t || wt.call(n, r)
        },isEmptyObject: function(n) {
            var t;
            for (t in n)
                return !1;
            return !0
        },error: function(n) {
            throw new Error(n);
        },parseHTML: function(n, t, u) {
            var f;
            return !n || typeof n != "string" ? null : (typeof t == "boolean" && (u = t, t = 0), t = t || r, (f = yu.exec(n)) ? [t.createElement(f[1])] : (f = i.buildFragment([n], t, u ? null : []), i.merge([], (f.cacheable ? i.clone(f.fragment) : f.fragment).childNodes)))
        },parseJSON: function(t) {
            if (!t || typeof t != "string")
                return null;
            if (t = i.trim(t), n.JSON && n.JSON.parse)
                return n.JSON.parse(t);
            if (pu.test(t.replace(of, "@").replace(sf, "]").replace(ef, "")))
                return new Function("return " + t)();
            i.error("Invalid JSON: " + t)
        },parseXML: function(r) {
            var u, f;
            if (!r || typeof r != "string")
                return null;
            try {
                n.DOMParser ? (f = new DOMParser, u = f.parseFromString(r, "text/xml")) : (u = new ActiveXObject("Microsoft.XMLDOM"), u.async = "false", u.loadXML(r))
            } catch (e) {
                u = t
            }
            return (!u || !u.documentElement || u.getElementsByTagName("parsererror").length) && i.error("Invalid XML: " + r), u
        },noop: function() {
        },globalEval: function(t) {
            t && au.test(t) && (n.execScript || function(t) {
                n.eval.call(n, t)
            })(t)
        },camelCase: function(n) {
            return n.replace(hf, "ms-").replace(bf, kf)
        },nodeName: function(n, t) {
            return n.nodeName && n.nodeName.toUpperCase() === t.toUpperCase()
        },each: function(n, r, u) {
            var f, e = 0, o = n.length, s = o === t || i.isFunction(n);
            if (u) {
                if (s) {
                    for (f in n)
                        if (r.apply(n[f], u) === !1)
                            break
                } else
                    for (; e < o; )
                        if (r.apply(n[e++], u) === !1)
                            break
            } else if (s) {
                for (f in n)
                    if (r.call(n[f], f, n[f]) === !1)
                        break
            } else
                for (; e < o; )
                    if (r.call(n[e], e, n[e++]) === !1)
                        break;
            return n
        },trim: cu ? function(n) {
            return n == null ? "" : cu.call(n)
        } : function(n) {
            return n == null ? "" : n.toString().replace(le, "")
        },makeArray: function(n, t) {
            var r, u = t || [];
            return n != null && (r = i.type(n), n.length == null || r === "string" || r === "function" || r === "regexp" || i.isWindow(n) ? hr.call(u, n) : i.merge(u, n)), u
        },inArray: function(n, t, i) {
            var r;
            if (t) {
                if (hu)
                    return hu.call(t, n, i);
                for (r = t.length, i = i ? i < 0 ? Math.max(0, r + i) : i : 0; i < r; i++)
                    if (i in t && t[i] === n)
                        return i
            }
            return -1
        },merge: function(n, i) {
            var f = i.length, u = n.length, r = 0;
            if (typeof f == "number")
                for (; r < f; r++)
                    n[u++] = i[r];
            else
                while (i[r] !== t)
                    n[u++] = i[r++];
            return n.length = u, n
        },grep: function(n, t, i) {
            var u, f = [], r = 0, e = n.length;
            for (i = !!i; r < e; r++)
                u = !!t(n[r], r), i !== u && f.push(n[r]);
            return f
        },map: function(n, r, u) {
            var f, h, e = [], s = 0, o = n.length, c = n instanceof i || o !== t && typeof o == "number" && (o > 0 && n[0] && n[o - 1] || o === 0 || i.isArray(n));
            if (c)
                for (; s < o; s++)
                    f = r(n[s], s, u), f != null && (e[e.length] = f);
            else
                for (h in n)
                    f = r(n[h], h, u), f != null && (e[e.length] = f);
            return e.concat.apply([], e)
        },guid: 1,proxy: function(n, r) {
            var f, e, u;
            return typeof r == "string" && (f = n[r], r = n, n = f), i.isFunction(n) ? (e = o.call(arguments, 2), u = function() {
                return n.apply(r, e.concat(o.call(arguments)))
            }, u.guid = n.guid = n.guid || u.guid || i.guid++, u) : t
        },access: function(n, r, u, f, e, o, s) {
            var c, l = u == null, h = 0, a = n.length;
            if (u && typeof u == "object") {
                for (h in u)
                    i.access(n, r, h, u[h], 1, o, f);
                e = 1
            } else if (f !== t) {
                if (c = s === t && i.isFunction(f), l && (c ? (c = r, r = function(n, t, r) {
                    return c.call(i(n), r)
                }) : (r.call(n, f), r = null)), r)
                    for (; h < a; h++)
                        r(n[h], u, c ? f.call(n[h], h, r(n[h], u)) : f, s);
                e = 1
            }
            return e ? n : l ? r.call(n) : a ? r(n[0], u) : o
        },now: function() {
            return +new Date
        }}), i.ready.promise = function(t) {
        if (!g)
            if (g = i.Deferred(), r.readyState === "complete" || r.readyState !== "loading" && r.addEventListener)
                setTimeout(i.ready, 1);
            else if (r.addEventListener)
                r.addEventListener("DOMContentLoaded", rt, !1), n.addEventListener("load", i.ready, !1);
            else {
                r.attachEvent("onreadystatechange", rt), n.attachEvent("onload", i.ready);
                var u = !1;
                try {
                    u = n.frameElement == null && r.documentElement
                } catch (e) {
                }
                u && u.doScroll && function f() {
                    if (!i.isReady) {
                        try {
                            u.doScroll("left")
                        } catch (n) {
                            return setTimeout(f, 50)
                        }
                        i.ready()
                    }
                }()
            }
        return g.promise(t)
    }, i.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(n, t) {
        vu["[object " + t + "]"] = t.toLowerCase()
    }), cr = i(r), ii = {}, i.Callbacks = function(n) {
        n = typeof n == "string" ? ii[n] || te(n) : i.extend({}, n);
        var f, c, o, l, s, e, r = [], u = !n.once && [], a = function(t) {
            for (f = n.memory && t, c = !0, e = l || 0, l = 0, s = r.length, o = !0; r && e < s; e++)
                if (r[e].apply(t[0], t[1]) === !1 && n.stopOnFalse) {
                    f = !1;
                    break
                }
            o = !1, r && (u ? u.length && a(u.shift()) : f ? r = [] : h.disable())
        }, h = {add: function() {
                if (r) {
                    var t = r.length;
                    (function u(t) {
                        i.each(t, function(t, f) {
                            i.isFunction(f) && (!n.unique || !h.has(f)) ? r.push(f) : f && f.length && u(f)
                        })
                    })(arguments), o ? s = r.length : f && (l = t, a(f))
                }
                return this
            },remove: function() {
                return r && i.each(arguments, function(n, t) {
                    for (var u; (u = i.inArray(t, r, u)) > -1; )
                        r.splice(u, 1), o && (u <= s && s--, u <= e && e--)
                }), this
            },has: function(n) {
                return i.inArray(n, r) > -1
            },empty: function() {
                return r = [], this
            },disable: function() {
                return r = u = f = t, this
            },disabled: function() {
                return !r
            },lock: function() {
                return u = t, f || h.disable(), this
            },locked: function() {
                return !u
            },fireWith: function(n, t) {
                return t = t || [], t = [n, t.slice ? t.slice() : t], r && (!c || u) && (o ? u.push(t) : a(t)), this
            },fire: function() {
                return h.fireWith(this, arguments), this
            },fired: function() {
                return !!c
            }};
        return h
    }, i.extend({Deferred: function(n) {
            var u = [["resolve", "done", i.Callbacks("once memory"), "resolved"], ["reject", "fail", i.Callbacks("once memory"), "rejected"], ["notify", "progress", i.Callbacks("memory")]], f = "pending", r = {state: function() {
                    return f
                },always: function() {
                    return t.done(arguments).fail(arguments), this
                },then: function() {
                    var n = arguments;
                    return i.Deferred(function(r) {
                        i.each(u, function(u, f) {
                            var e = f[0], o = n[u];
                            t[f[1]](i.isFunction(o) ? function() {
                                var n = o.apply(this, arguments);
                                n && i.isFunction(n.promise) ? n.promise().done(r.resolve).fail(r.reject).progress(r.notify) : r[e + "With"](this === t ? r : this, [n])
                            } : r[e])
                        }), n = null
                    }).promise()
                },promise: function(n) {
                    return typeof n == "object" ? i.extend(n, r) : r
                }}, t = {};
            return r.pipe = r.then, i.each(u, function(n, i) {
                var e = i[2], o = i[3];
                r[i[1]] = e.add, o && e.add(function() {
                    f = o
                }, u[n ^ 1][2].disable, u[2][2].lock), t[i[0]] = e.fire, t[i[0] + "With"] = e.fireWith
            }), r.promise(t), n && n.call(t, t), t
        },when: function(n) {
            var t = 0, u = o.call(arguments), r = u.length, e = r !== 1 || n && i.isFunction(n.promise) ? r : 0, f = e === 1 ? n : i.Deferred(), c = function(n, t, i) {
                return function(r) {
                    t[n] = this, i[n] = arguments.length > 1 ? o.call(arguments) : r, i === s ? f.notifyWith(t, i) : --e || f.resolveWith(t, i)
                }
            }, s, l, h;
            if (r > 1)
                for (s = new Array(r), l = new Array(r), h = new Array(r); t < r; t++)
                    u[t] && i.isFunction(u[t].promise) ? u[t].promise().done(c(t, h, u)).fail(f.reject).progress(c(t, l, s)) : --e;
            return e || f.resolveWith(h, u), f.promise()
        }}), i.support = function() {
        var u, h, e, c, l, f, o, a, v, s, y, t = r.createElement("div");
        if (t.setAttribute("className", "t"), t.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", h = t.getElementsByTagName("*"), e = t.getElementsByTagName("a")[0], e.style.cssText = "top:1px;float:left;opacity:.5", !h || !h.length || !e)
            return {};
        c = r.createElement("select"), l = c.appendChild(r.createElement("option")), f = t.getElementsByTagName("input")[0], u = {leadingWhitespace: t.firstChild.nodeType === 3,tbody: !t.getElementsByTagName("tbody").length,htmlSerialize: !!t.getElementsByTagName("link").length,style: /top/.test(e.getAttribute("style")),hrefNormalized: e.getAttribute("href") === "/a",opacity: /^0.5/.test(e.style.opacity),cssFloat: !!e.style.cssFloat,checkOn: f.value === "on",optSelected: l.selected,getSetAttribute: t.className !== "t",enctype: !!r.createElement("form").enctype,html5Clone: r.createElement("nav").cloneNode(!0).outerHTML !== "<:nav></:nav>",boxModel: r.compatMode === "CSS1Compat",submitBubbles: !0,changeBubbles: !0,focusinBubbles: !1,deleteExpando: !0,noCloneEvent: !0,inlineBlockNeedsLayout: !1,shrinkWrapBlocks: !1,reliableMarginRight: !0,boxSizingReliable: !0,pixelPosition: !1}, f.checked = !0, u.noCloneChecked = f.cloneNode(!0).checked, c.disabled = !0, u.optDisabled = !l.disabled;
        try {
            delete t.test
        } catch (p) {
            u.deleteExpando = !1
        }
        if (!t.addEventListener && t.attachEvent && t.fireEvent && (t.attachEvent("onclick", y = function() {
            u.noCloneEvent = !1
        }), t.cloneNode(!0).fireEvent("onclick"), t.detachEvent("onclick", y)), f = r.createElement("input"), f.value = "t", f.setAttribute("type", "radio"), u.radioValue = f.value === "t", f.setAttribute("checked", "checked"), f.setAttribute("name", "t"), t.appendChild(f), o = r.createDocumentFragment(), o.appendChild(t.lastChild), u.checkClone = o.cloneNode(!0).cloneNode(!0).lastChild.checked, u.appendChecked = f.checked, o.removeChild(f), o.appendChild(t), t.attachEvent)
            for (v in {submit: !0,change: !0,focusin: !0})
                a = "on" + v, s = a in t, s || (t.setAttribute(a, "return;"), s = typeof t[a] == "function"), u[v + "Bubbles"] = s;
        return i(function() {
            var i, t, f, e, h = "padding:0;margin:0;border:0;display:block;overflow:hidden;", o = r.getElementsByTagName("body")[0];
            o && (i = r.createElement("div"), i.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px", o.insertBefore(i, o.firstChild), t = r.createElement("div"), i.appendChild(t), t.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", f = t.getElementsByTagName("td"), f[0].style.cssText = "padding:0;margin:0;border:0;display:none", s = f[0].offsetHeight === 0, f[0].style.display = "", f[1].style.display = "none", u.reliableHiddenOffsets = s && f[0].offsetHeight === 0, t.innerHTML = "", t.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", u.boxSizing = t.offsetWidth === 4, u.doesNotIncludeMarginInBodyOffset = o.offsetTop !== 1, n.getComputedStyle && (u.pixelPosition = (n.getComputedStyle(t, null) || {}).top !== "1%", u.boxSizingReliable = (n.getComputedStyle(t, null) || {width: "4px"}).width === "4px", e = r.createElement("div"), e.style.cssText = t.style.cssText = h, e.style.marginRight = e.style.width = "0", t.style.width = "1px", t.appendChild(e), u.reliableMarginRight = !parseFloat((n.getComputedStyle(e, null) || {}).marginRight)), typeof t.style.zoom != "undefined" && (t.innerHTML = "", t.style.cssText = h + "width:1px;padding:1px;display:inline;zoom:1", u.inlineBlockNeedsLayout = t.offsetWidth === 3, t.style.display = "block", t.style.overflow = "visible", t.innerHTML = "<div></div>", t.firstChild.style.width = "5px", u.shrinkWrapBlocks = t.offsetWidth !== 3, i.style.zoom = 1), o.removeChild(i), i = t = f = e = null)
        }), o.removeChild(t), h = e = c = l = f = o = t = null, u
    }(), sr = /^(?:\{.*\}|\[.*\])$/, ar = /([A-Z])/g, i.extend({cache: {},deletedIds: [],uuid: 0,expando: "jQuery" + (i.fn.jquery + Math.random()).replace(/\D/g, ""),noData: {embed: !0,object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet: !0},hasData: function(n) {
            return n = n.nodeType ? i.cache[n[i.expando]] : n[i.expando], !!n && !bt(n)
        },data: function(n, r, u, f) {
            if (i.acceptData(n)) {
                var s, h, c = i.expando, a = typeof r == "string", l = n.nodeType, o = l ? i.cache : n, e = l ? n[c] : n[c] && c;
                if (e && o[e] && (f || o[e].data) || !a || u !== t)
                    return e || (l ? n[c] = e = i.deletedIds.pop() || ++i.uuid : e = c), o[e] || (o[e] = {}, l || (o[e].toJSON = i.noop)), (typeof r == "object" || typeof r == "function") && (f ? o[e] = i.extend(o[e], r) : o[e].data = i.extend(o[e].data, r)), s = o[e], f || (s.data || (s.data = {}), s = s.data), u !== t && (s[i.camelCase(r)] = u), a ? (h = s[r], h == null && (h = s[i.camelCase(r)])) : h = s, h
            }
        },removeData: function(n, t, r) {
            if (i.acceptData(n)) {
                var e, o, h, s = n.nodeType, u = s ? i.cache : n, f = s ? n[i.expando] : i.expando;
                if (u[f]) {
                    if (t && (e = r ? u[f] : u[f].data, e)) {
                        for (i.isArray(t) || (t in e ? t = [t] : (t = i.camelCase(t), t = t in e ? [t] : t.split(" "))), o = 0, h = t.length; o < h; o++)
                            delete e[t[o]];
                        if (!(r ? bt : i.isEmptyObject)(e))
                            return
                    }
                    (r || (delete u[f].data, bt(u[f]))) && (s ? i.cleanData([n], !0) : i.support.deleteExpando || u != u.window ? delete u[f] : u[f] = null)
                }
            }
        },_data: function(n, t, r) {
            return i.data(n, t, r, !0)
        },acceptData: function(n) {
            var t = n.nodeName && i.noData[n.nodeName.toLowerCase()];
            return !t || t !== !0 && n.getAttribute("classid") === t
        }}), i.fn.extend({data: function(n, r) {
            var u, s, h, o, l, e = this[0], c = 0, f = null;
            if (n === t) {
                if (this.length && (f = i.data(e), e.nodeType === 1 && !i._data(e, "parsedAttrs"))) {
                    for (h = e.attributes, l = h.length; c < l; c++)
                        o = h[c].name, o.indexOf("data-") === 0 && (o = i.camelCase(o.substring(5)), su(e, o, f[o]));
                    i._data(e, "parsedAttrs", !0)
                }
                return f
            }
            return typeof n == "object" ? this.each(function() {
                i.data(this, n)
            }) : (u = n.split(".", 2), u[1] = u[1] ? "." + u[1] : "", s = u[1] + "!", i.access(this, function(r) {
                if (r === t)
                    return f = this.triggerHandler("getData" + s, [u[0]]), f === t && e && (f = i.data(e, n), f = su(e, n, f)), f === t && u[1] ? this.data(u[0]) : f;
                u[1] = r, this.each(function() {
                    var t = i(this);
                    t.triggerHandler("setData" + s, u), i.data(this, n, r), t.triggerHandler("changeData" + s, u)
                })
            }, null, r, arguments.length > 1, null, !1))
        },removeData: function(n) {
            return this.each(function() {
                i.removeData(this, n)
            })
        }}), i.extend({queue: function(n, t, r) {
            var u;
            if (n)
                return t = (t || "fx") + "queue", u = i._data(n, t), r && (!u || i.isArray(r) ? u = i._data(n, t, i.makeArray(r)) : u.push(r)), u || []
        },dequeue: function(n, t) {
            t = t || "fx";
            var r = i.queue(n, t), u = r.shift(), f = i._queueHooks(n, t), e = function() {
                i.dequeue(n, t)
            };
            u === "inprogress" && (u = r.shift()), u && (t === "fx" && r.unshift("inprogress"), delete f.stop, u.call(n, e, f)), !r.length && f && f.empty.fire()
        },_queueHooks: function(n, t) {
            var r = t + "queueHooks";
            return i._data(n, r) || i._data(n, r, {empty: i.Callbacks("once memory").add(function() {
                    i.removeData(n, t + "queue", !0), i.removeData(n, r, !0)
                })})
        }}), i.fn.extend({queue: function(n, r) {
            var u = 2;
            return typeof n != "string" && (r = n, n = "fx", u--), arguments.length < u ? i.queue(this[0], n) : r === t ? this : this.each(function() {
                var t = i.queue(this, n, r);
                i._queueHooks(this, n), n === "fx" && t[0] !== "inprogress" && i.dequeue(this, n)
            })
        },dequeue: function(n) {
            return this.each(function() {
                i.dequeue(this, n)
            })
        },delay: function(n, t) {
            return n = i.fx ? i.fx.speeds[n] || n : n, t = t || "fx", this.queue(t, function(t, i) {
                var r = setTimeout(t, n);
                i.stop = function() {
                    clearTimeout(r)
                }
            })
        },clearQueue: function(n) {
            return this.queue(n || "fx", [])
        },promise: function(n, r) {
            var u, e = 1, o = i.Deferred(), f = this, s = this.length, h = function() {
                --e || o.resolveWith(f, [f])
            };
            for (typeof n != "string" && (r = n, n = t), n = n || "fx"; s--; )
                (u = i._data(f[s], n + "queueHooks")) && u.empty && (e++, u.empty.add(h));
            return h(), o.promise(r)
        }});
    var s, ri, fi, ei = /[\t\r\n]/g, wf = /\r/g, yf = /^(?:button|input)$/i, af = /^(?:button|input|object|select|textarea)$/i, cf = /^a(?:rea|)$/i, oi = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, or = i.support.getSetAttribute;
    i.fn.extend({attr: function(n, t) {
            return i.access(this, i.attr, n, t, arguments.length > 1)
        },removeAttr: function(n) {
            return this.each(function() {
                i.removeAttr(this, n)
            })
        },prop: function(n, t) {
            return i.access(this, i.prop, n, t, arguments.length > 1)
        },removeProp: function(n) {
            return n = i.propFix[n] || n, this.each(function() {
                try {
                    this[n] = t, delete this[n]
                } catch (i) {
                }
            })
        },addClass: function(n) {
            var r, f, o, t, e, u, s;
            if (i.isFunction(n))
                return this.each(function(t) {
                    i(this).addClass(n.call(this, t, this.className))
                });
            if (n && typeof n == "string")
                for (r = n.split(l), f = 0, o = this.length; f < o; f++)
                    if (t = this[f], t.nodeType === 1)
                        if (t.className || r.length !== 1) {
                            for (e = " " + t.className + " ", u = 0, s = r.length; u < s; u++)
                                ~e.indexOf(" " + r[u] + " ") || (e += r[u] + " ");
                            t.className = i.trim(e)
                        } else
                            t.className = n;
            return this
        },removeClass: function(n) {
            var e, r, u, f, s, o, h;
            if (i.isFunction(n))
                return this.each(function(t) {
                    i(this).removeClass(n.call(this, t, this.className))
                });
            if (n && typeof n == "string" || n === t)
                for (e = (n || "").split(l), o = 0, h = this.length; o < h; o++)
                    if (u = this[o], u.nodeType === 1 && u.className) {
                        for (r = (" " + u.className + " ").replace(ei, " "), f = 0, s = e.length; f < s; f++)
                            while (r.indexOf(" " + e[f] + " ") > -1)
                                r = r.replace(" " + e[f] + " ", " ");
                        u.className = n ? i.trim(r) : ""
                    }
            return this
        },toggleClass: function(n, t) {
            var r = typeof n, u = typeof t == "boolean";
            return i.isFunction(n) ? this.each(function(r) {
                i(this).toggleClass(n.call(this, r, this.className, t), t)
            }) : this.each(function() {
                if (r === "string")
                    for (var f, s = 0, o = i(this), e = t, h = n.split(l); f = h[s++]; )
                        e = u ? e : !o.hasClass(f), o[e ? "addClass" : "removeClass"](f);
                else
                    (r === "undefined" || r === "boolean") && (this.className && i._data(this, "__className__", this.className), this.className = this.className || n === !1 ? "" : i._data(this, "__className__") || "")
            })
        },hasClass: function(n) {
            for (var i = " " + n + " ", t = 0, r = this.length; t < r; t++)
                if (this[t].nodeType === 1 && (" " + this[t].className + " ").replace(ei, " ").indexOf(i) > -1)
                    return !0;
            return !1
        },val: function(n) {
            var r, u, e, f = this[0];
            return arguments.length ? (e = i.isFunction(n), this.each(function(u) {
                var f, o = i(this);
                this.nodeType === 1 && (f = e ? n.call(this, u, o.val()) : n, f == null ? f = "" : typeof f == "number" ? f += "" : i.isArray(f) && (f = i.map(f, function(n) {
                    return n == null ? "" : n + ""
                })), r = i.valHooks[this.type] || i.valHooks[this.nodeName.toLowerCase()], r && "set" in r && r.set(this, f, "value") !== t || (this.value = f))
            })) : f ? (r = i.valHooks[f.type] || i.valHooks[f.nodeName.toLowerCase()], r && "get" in r && (u = r.get(f, "value")) !== t ? u : (u = f.value, typeof u == "string" ? u.replace(wf, "") : u == null ? "" : u)) : void 0
        }}), i.extend({valHooks: {option: {get: function(n) {
                    var t = n.attributes.value;
                    return !t || t.specified ? n.value : n.text
                }},select: {get: function(n) {
                    var o, r, h, t, u = n.selectedIndex, s = [], f = n.options, e = n.type === "select-one";
                    if (u < 0)
                        return null;
                    for (r = e ? u : 0, h = e ? u + 1 : f.length; r < h; r++)
                        if (t = f[r], t.selected && (i.support.optDisabled ? !t.disabled : t.getAttribute("disabled") === null) && (!t.parentNode.disabled || !i.nodeName(t.parentNode, "optgroup"))) {
                            if (o = i(t).val(), e)
                                return o;
                            s.push(o)
                        }
                    return e && !s.length && f.length ? i(f[u]).val() : s
                },set: function(n, t) {
                    var r = i.makeArray(t);
                    return i(n).find("option").each(function() {
                        this.selected = i.inArray(i(this).val(), r) >= 0
                    }), r.length || (n.selectedIndex = -1), r
                }}},attrFn: {},attr: function(n, r, u, f) {
            var e, o, h, c = n.nodeType;
            if (n && c !== 3 && c !== 8 && c !== 2) {
                if (f && i.isFunction(i.fn[r]))
                    return i(n)[r](u);
                if (typeof n.getAttribute == "undefined")
                    return i.prop(n, r, u);
                if (h = c !== 1 || !i.isXMLDoc(n), h && (r = r.toLowerCase(), o = i.attrHooks[r] || (oi.test(r) ? ri : s)), u !== t) {
                    if (u === null) {
                        i.removeAttr(n, r);
                        return
                    }
                    return o && "set" in o && h && (e = o.set(n, u, r)) !== t ? e : (n.setAttribute(r, "" + u), u)
                }
                return o && "get" in o && h && (e = o.get(n, r)) !== null ? e : (e = n.getAttribute(r), e === null ? t : e)
            }
        },removeAttr: function(n, t) {
            var u, f, r, e, o = 0;
            if (t && n.nodeType === 1)
                for (f = t.split(l); o < f.length; o++)
                    r = f[o], r && (u = i.propFix[r] || r, e = oi.test(r), e || i.attr(n, r, ""), n.removeAttribute(or ? r : u), e && u in n && (n[u] = !1))
        },attrHooks: {type: {set: function(n, t) {
                    if (yf.test(n.nodeName) && n.parentNode)
                        i.error("type property can't be changed");
                    else if (!i.support.radioValue && t === "radio" && i.nodeName(n, "input")) {
                        var r = n.value;
                        return n.setAttribute("type", t), r && (n.value = r), t
                    }
                }},value: {get: function(n, t) {
                    return s && i.nodeName(n, "button") ? s.get(n, t) : t in n ? n.value : null
                },set: function(n, t, r) {
                    if (s && i.nodeName(n, "button"))
                        return s.set(n, t, r);
                    n.value = t
                }}},propFix: {tabindex: "tabIndex",readonly: "readOnly","for": "htmlFor","class": "className",maxlength: "maxLength",cellspacing: "cellSpacing",cellpadding: "cellPadding",rowspan: "rowSpan",colspan: "colSpan",usemap: "useMap",frameborder: "frameBorder",contenteditable: "contentEditable"},prop: function(n, r, u) {
            var e, f, s, o = n.nodeType;
            if (n && o !== 3 && o !== 8 && o !== 2)
                return s = o !== 1 || !i.isXMLDoc(n), s && (r = i.propFix[r] || r, f = i.propHooks[r]), u !== t ? f && "set" in f && (e = f.set(n, u, r)) !== t ? e : n[r] = u : f && "get" in f && (e = f.get(n, r)) !== null ? e : n[r]
        },propHooks: {tabIndex: {get: function(n) {
                    var i = n.getAttributeNode("tabindex");
                    return i && i.specified ? parseInt(i.value, 10) : af.test(n.nodeName) || cf.test(n.nodeName) && n.href ? 0 : t
                }}}}), ri = {get: function(n, r) {
            var u, f = i.prop(n, r);
            return f === !0 || typeof f != "boolean" && (u = n.getAttributeNode(r)) && u.nodeValue !== !1 ? r.toLowerCase() : t
        },set: function(n, t, r) {
            var u;
            return t === !1 ? i.removeAttr(n, r) : (u = i.propFix[r] || r, u in n && (n[u] = !0), n.setAttribute(r, r.toLowerCase())), r
        }}, or || (fi = {name: !0,id: !0,coords: !0}, s = i.valHooks.button = {get: function(n, i) {
            var r;
            return r = n.getAttributeNode(i), r && (fi[i] ? r.value !== "" : r.specified) ? r.value : t
        },set: function(n, t, i) {
            var u = n.getAttributeNode(i);
            return u || (u = r.createAttribute(i), n.setAttributeNode(u)), u.value = t + ""
        }}, i.each(["width", "height"], function(n, t) {
        i.attrHooks[t] = i.extend(i.attrHooks[t], {set: function(n, i) {
                if (i === "")
                    return n.setAttribute(t, "auto"), i
            }})
    }), i.attrHooks.contenteditable = {get: s.get,set: function(n, t, i) {
            t === "" && (t = "false"), s.set(n, t, i)
        }}), i.support.hrefNormalized || i.each(["href", "src", "width", "height"], function(n, r) {
        i.attrHooks[r] = i.extend(i.attrHooks[r], {get: function(n) {
                var i = n.getAttribute(r, 2);
                return i === null ? t : i
            }})
    }), i.support.style || (i.attrHooks.style = {get: function(n) {
            return n.style.cssText.toLowerCase() || t
        },set: function(n, t) {
            return n.style.cssText = "" + t
        }}), i.support.optSelected || (i.propHooks.selected = i.extend(i.propHooks.selected, {get: function(n) {
            var t = n.parentNode;
            return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
        }})), i.support.enctype || (i.propFix.enctype = "encoding"), i.support.checkOn || i.each(["radio", "checkbox"], function() {
        i.valHooks[this] = {get: function(n) {
                return n.getAttribute("value") === null ? "on" : n.value
            }}
    }), i.each(["radio", "checkbox"], function() {
        i.valHooks[this] = i.extend(i.valHooks[this], {set: function(n, t) {
                if (i.isArray(t))
                    return n.checked = i.inArray(i(n).val(), t) >= 0
            }})
    });
    var yt = /^(?:textarea|input|select)$/i, hi = /^([^\.]*|)(?:\.(.+)|)$/, ff = /(?:^|\s)hover(\.\S+|)\b/, tf = /^key/, wu = /^(?:mouse|contextmenu)|click/, ci = /^(?:focusinfocus|focusoutblur)$/, li = function(n) {
        return i.event.special.hover ? n : n.replace(ff, "mouseenter$1 mouseleave$1")
    };
    i.event = {add: function(n, r, u, f, e) {
            var a, s, v, y, p, o, b, l, w, c, h;
            if (n.nodeType !== 3 && n.nodeType !== 8 && r && u && (a = i._data(n))) {
                for (u.handler && (w = u, u = w.handler, e = w.selector), u.guid || (u.guid = i.guid++), v = a.events, v || (a.events = v = {}), s = a.handle, s || (a.handle = s = function(n) {
                    return typeof i != "undefined" && (!n || i.event.triggered !== n.type) ? i.event.dispatch.apply(s.elem, arguments) : t
                }, s.elem = n), r = i.trim(li(r)).split(" "), y = 0; y < r.length; y++)
                    p = hi.exec(r[y]) || [], o = p[1], b = (p[2] || "").split(".").sort(), h = i.event.special[o] || {}, o = (e ? h.delegateType : h.bindType) || o, h = i.event.special[o] || {}, l = i.extend({type: o,origType: p[1],data: f,handler: u,guid: u.guid,selector: e,namespace: b.join(".")}, w), c = v[o], c || (c = v[o] = [], c.delegateCount = 0, h.setup && h.setup.call(n, f, b, s) !== !1 || (n.addEventListener ? n.addEventListener(o, s, !1) : n.attachEvent && n.attachEvent("on" + o, s))), h.add && (h.add.call(n, l), l.handler.guid || (l.handler.guid = u.guid)), e ? c.splice(c.delegateCount++, 0, l) : c.push(l), i.event.global[o] = !0;
                n = null
            }
        },global: {},remove: function(n, t, r, u, f) {
            var v, p, e, b, c, w, y, l, h, o, s, a = i.hasData(n) && i._data(n);
            if (a && (l = a.events)) {
                for (t = i.trim(li(t || "")).split(" "), v = 0; v < t.length; v++) {
                    if (p = hi.exec(t[v]) || [], e = b = p[1], c = p[2], !e) {
                        for (e in l)
                            i.event.remove(n, e + t[v], r, u, !0);
                        continue
                    }
                    for (h = i.event.special[e] || {}, e = (u ? h.delegateType : h.bindType) || e, o = l[e] || [], w = o.length, c = c ? new RegExp("(^|\\.)" + c.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null, y = 0; y < o.length; y++)
                        s = o[y], (f || b === s.origType) && (!r || r.guid === s.guid) && (!c || c.test(s.namespace)) && (!u || u === s.selector || u === "**" && s.selector) && (o.splice(y--, 1), s.selector && o.delegateCount--, h.remove && h.remove.call(n, s));
                    o.length === 0 && w !== o.length && ((!h.teardown || h.teardown.call(n, c, a.handle) === !1) && i.removeEvent(n, e, a.handle), delete l[e])
                }
                i.isEmptyObject(l) && (delete a.handle, i.removeData(n, "events", !0))
            }
        },customEvent: {getData: !0,setData: !0,changeData: !0},trigger: function(u, f, e, o) {
            if (!e || e.nodeType !== 3 && e.nodeType !== 8) {
                var w, d, c, h, l, v, a, y, p, k, s = u.type || u, b = [];
                if (ci.test(s + i.event.triggered))
                    return;
                if (s.indexOf("!") >= 0 && (s = s.slice(0, -1), d = !0), s.indexOf(".") >= 0 && (b = s.split("."), s = b.shift(), b.sort()), (!e || i.event.customEvent[s]) && !i.event.global[s])
                    return;
                if (u = typeof u == "object" ? u[i.expando] ? u : new i.Event(s, u) : new i.Event(s), u.type = s, u.isTrigger = !0, u.exclusive = d, u.namespace = b.join("."), u.namespace_re = u.namespace ? new RegExp("(^|\\.)" + b.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, v = s.indexOf(":") < 0 ? "on" + s : "", !e) {
                    w = i.cache;
                    for (c in w)
                        w[c].events && w[c].events[s] && i.event.trigger(u, f, w[c].handle.elem, !0);
                    return
                }
                if (u.result = t, u.target || (u.target = e), f = f != null ? i.makeArray(f) : [], f.unshift(u), a = i.event.special[s] || {}, a.trigger && a.trigger.apply(e, f) === !1)
                    return;
                if (p = [[e, a.bindType || s]], !o && !a.noBubble && !i.isWindow(e)) {
                    for (k = a.delegateType || s, h = ci.test(k + s) ? e : e.parentNode, l = e; h; h = h.parentNode)
                        p.push([h, k]), l = h;
                    l === (e.ownerDocument || r) && p.push([l.defaultView || l.parentWindow || n, k])
                }
                for (c = 0; c < p.length && !u.isPropagationStopped(); c++)
                    h = p[c][0], u.type = p[c][1], y = (i._data(h, "events") || {})[u.type] && i._data(h, "handle"), y && y.apply(h, f), y = v && h[v], y && i.acceptData(h) && y.apply(h, f) === !1 && u.preventDefault();
                return u.type = s, !o && !u.isDefaultPrevented() && (!a._default || a._default.apply(e.ownerDocument, f) === !1) && (s !== "click" || !i.nodeName(e, "a")) && i.acceptData(e) && v && e[s] && (s !== "focus" && s !== "blur" || u.target.offsetWidth !== 0) && !i.isWindow(e) && (l = e[v], l && (e[v] = null), i.event.triggered = s, e[s](), i.event.triggered = t, l && (e[v] = l)), u.result
            }
            return
        },dispatch: function(r) {
            r = i.event.fix(r || n.event);
            var f, p, e, y, v, a, s, l, u, o, g, c = (i._data(this, "events") || {})[r.type] || [], h = c.delegateCount, k = [].slice.call(arguments), d = !r.exclusive && !r.namespace, w = i.event.special[r.type] || {}, b = [];
            if (k[0] = r, r.delegateTarget = this, !w.preDispatch || w.preDispatch.call(this, r) !== !1) {
                if (h && (!r.button || r.type !== "click"))
                    for (y = i(this), y.context = this, e = r.target; e != this; e = e.parentNode || this)
                        if (e.disabled !== !0 || r.type !== "click") {
                            for (a = {}, l = [], y[0] = e, f = 0; f < h; f++)
                                u = c[f], o = u.selector, a[o] === t && (a[o] = y.is(o)), a[o] && l.push(u);
                            l.length && b.push({elem: e,matches: l})
                        }
                for (c.length > h && b.push({elem: this,matches: c.slice(h)}), f = 0; f < b.length && !r.isPropagationStopped(); f++)
                    for (s = b[f], r.currentTarget = s.elem, p = 0; p < s.matches.length && !r.isImmediatePropagationStopped(); p++)
                        u = s.matches[p], (d || !r.namespace && !u.namespace || r.namespace_re && r.namespace_re.test(u.namespace)) && (r.data = u.data, r.handleObj = u, v = ((i.event.special[u.origType] || {}).handle || u.handler).apply(s.elem, k), v !== t && (r.result = v, v === !1 && (r.preventDefault(), r.stopPropagation())));
                return w.postDispatch && w.postDispatch.call(this, r), r.result
            }
        },props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks: {},keyHooks: {props: "char charCode key keyCode".split(" "),filter: function(n, t) {
                return n.which == null && (n.which = t.charCode != null ? t.charCode : t.keyCode), n
            }},mouseHooks: {props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter: function(n, i) {
                var o, u, f, e = i.button, s = i.fromElement;
                return n.pageX == null && i.clientX != null && (o = n.target.ownerDocument || r, u = o.documentElement, f = o.body, n.pageX = i.clientX + (u && u.scrollLeft || f && f.scrollLeft || 0) - (u && u.clientLeft || f && f.clientLeft || 0), n.pageY = i.clientY + (u && u.scrollTop || f && f.scrollTop || 0) - (u && u.clientTop || f && f.clientTop || 0)), !n.relatedTarget && s && (n.relatedTarget = s === n.target ? i.toElement : s), !n.which && e !== t && (n.which = e & 1 ? 1 : e & 2 ? 3 : e & 4 ? 2 : 0), n
            }},fix: function(n) {
            if (n[i.expando])
                return n;
            var f, e, t = n, u = i.event.fixHooks[n.type] || {}, o = u.props ? this.props.concat(u.props) : this.props;
            for (n = i.Event(t), f = o.length; f; )
                e = o[--f], n[e] = t[e];
            return n.target || (n.target = t.srcElement || r), n.target.nodeType === 3 && (n.target = n.target.parentNode), n.metaKey = !!n.metaKey, u.filter ? u.filter(n, t) : n
        },special: {ready: {setup: i.bindReady},load: {noBubble: !0},focus: {delegateType: "focusin"},blur: {delegateType: "focusout"},beforeunload: {setup: function(n, t, r) {
                    i.isWindow(this) && (this.onbeforeunload = r)
                },teardown: function(n, t) {
                    this.onbeforeunload === t && (this.onbeforeunload = null)
                }}},simulate: function(n, t, r, u) {
            var f = i.extend(new i.Event, r, {type: n,isSimulated: !0,originalEvent: {}});
            u ? i.event.trigger(f, null, t) : i.event.dispatch.call(t, f), f.isDefaultPrevented() && r.preventDefault()
        }}, i.event.handle = i.event.dispatch, i.removeEvent = r.removeEventListener ? function(n, t, i) {
        n.removeEventListener && n.removeEventListener(t, i, !1)
    } : function(n, t, i) {
        var r = "on" + t;
        n.detachEvent && (typeof n[r] == "undefined" && (n[r] = null), n.detachEvent(r, i))
    }, i.Event = function(n, t) {
        if (this instanceof i.Event)
            n && n.type ? (this.originalEvent = n, this.type = n.type, this.isDefaultPrevented = n.defaultPrevented || n.returnValue === !1 || n.getPreventDefault && n.getPreventDefault() ? et : p) : this.type = n, t && i.extend(this, t), this.timeStamp = n && n.timeStamp || i.now(), this[i.expando] = !0;
        else
            return new i.Event(n, t)
    }, i.Event.prototype = {preventDefault: function() {
            this.isDefaultPrevented = et;
            var n = this.originalEvent;
            n && (n.preventDefault ? n.preventDefault() : n.returnValue = !1)
        },stopPropagation: function() {
            this.isPropagationStopped = et;
            var n = this.originalEvent;
            n && (n.stopPropagation && n.stopPropagation(), n.cancelBubble = !0)
        },stopImmediatePropagation: function() {
            this.isImmediatePropagationStopped = et, this.stopPropagation()
        },isDefaultPrevented: p,isPropagationStopped: p,isImmediatePropagationStopped: p}, i.each({mouseenter: "mouseover",mouseleave: "mouseout"}, function(n, t) {
        i.event.special[n] = {delegateType: t,bindType: t,handle: function(n) {
                var f, e = this, r = n.relatedTarget, u = n.handleObj, o = u.selector;
                return r && (r === e || i.contains(e, r)) || (n.type = u.origType, f = u.handler.apply(this, arguments), n.type = t), f
            }}
    }), i.support.submitBubbles || (i.event.special.submit = {setup: function() {
            if (i.nodeName(this, "form"))
                return !1;
            i.event.add(this, "click._submit keypress._submit", function(n) {
                var u = n.target, r = i.nodeName(u, "input") || i.nodeName(u, "button") ? u.form : t;
                r && !i._data(r, "_submit_attached") && (i.event.add(r, "submit._submit", function(n) {
                    n._submit_bubble = !0
                }), i._data(r, "_submit_attached", !0))
            })
        },postDispatch: function(n) {
            n._submit_bubble && (delete n._submit_bubble, this.parentNode && !n.isTrigger && i.event.simulate("submit", this.parentNode, n, !0))
        },teardown: function() {
            if (i.nodeName(this, "form"))
                return !1;
            i.event.remove(this, "._submit")
        }}), i.support.changeBubbles || (i.event.special.change = {setup: function() {
            if (yt.test(this.nodeName))
                return (this.type === "checkbox" || this.type === "radio") && (i.event.add(this, "propertychange._change", function(n) {
                    n.originalEvent.propertyName === "checked" && (this._just_changed = !0)
                }), i.event.add(this, "click._change", function(n) {
                    this._just_changed && !n.isTrigger && (this._just_changed = !1), i.event.simulate("change", this, n, !0)
                })), !1;
            i.event.add(this, "beforeactivate._change", function(n) {
                var t = n.target;
                yt.test(t.nodeName) && !i._data(t, "_change_attached") && (i.event.add(t, "change._change", function(n) {
                    this.parentNode && !n.isSimulated && !n.isTrigger && i.event.simulate("change", this.parentNode, n, !0)
                }), i._data(t, "_change_attached", !0))
            })
        },handle: function(n) {
            var t = n.target;
            if (this !== t || n.isSimulated || n.isTrigger || t.type !== "radio" && t.type !== "checkbox")
                return n.handleObj.handler.apply(this, arguments)
        },teardown: function() {
            return i.event.remove(this, "._change"), yt.test(this.nodeName)
        }}), i.support.focusinBubbles || i.each({focus: "focusin",blur: "focusout"}, function(n, t) {
        var u = 0, f = function(n) {
            i.event.simulate(t, n.target, i.event.fix(n), !0)
        };
        i.event.special[t] = {setup: function() {
                u++ == 0 && r.addEventListener(n, f, !0)
            },teardown: function() {
                --u == 0 && r.removeEventListener(n, f, !0)
            }}
    }), i.fn.extend({on: function(n, r, u, f, e) {
            var o, s;
            if (typeof n == "object") {
                typeof r != "string" && (u = u || r, r = t);
                for (s in n)
                    this.on(s, r, u, n[s], e);
                return this
            }
            if (u == null && f == null ? (f = r, u = r = t) : f == null && (typeof r == "string" ? (f = u, u = t) : (f = u, u = r, r = t)), f === !1)
                f = p;
            else if (!f)
                return this;
            return e === 1 && (o = f, f = function(n) {
                return i().off(n), o.apply(this, arguments)
            }, f.guid = o.guid || (o.guid = i.guid++)), this.each(function() {
                i.event.add(this, n, f, u, r)
            })
        },one: function(n, t, i, r) {
            return this.on(n, t, i, r, 1)
        },off: function(n, r, u) {
            var f, e;
            if (n && n.preventDefault && n.handleObj)
                return f = n.handleObj, i(n.delegateTarget).off(f.namespace ? f.origType + "." + f.namespace : f.origType, f.selector, f.handler), this;
            if (typeof n == "object") {
                for (e in n)
                    this.off(e, r, n[e]);
                return this
            }
            return (r === !1 || typeof r == "function") && (u = r, r = t), u === !1 && (u = p), this.each(function() {
                i.event.remove(this, n, u, r)
            })
        },bind: function(n, t, i) {
            return this.on(n, null, t, i)
        },unbind: function(n, t) {
            return this.off(n, null, t)
        },live: function(n, t, r) {
            return i(this.context).on(n, this.selector, t, r), this
        },die: function(n, t) {
            return i(this.context).off(n, this.selector || "**", t), this
        },delegate: function(n, t, i, r) {
            return this.on(t, n, i, r)
        },undelegate: function(n, t, i) {
            return arguments.length == 1 ? this.off(n, "**") : this.off(t, n || "**", i)
        },trigger: function(n, t) {
            return this.each(function() {
                i.event.trigger(n, t, this)
            })
        },triggerHandler: function(n, t) {
            if (this[0])
                return i.event.trigger(n, t, this[0], !0)
        },toggle: function(n) {
            var t = arguments, u = n.guid || i.guid++, r = 0, f = function(u) {
                var f = (i._data(this, "lastToggle" + n.guid) || 0) % r;
                return i._data(this, "lastToggle" + n.guid, f + 1), u.preventDefault(), t[f].apply(this, arguments) || !1
            };
            for (f.guid = u; r < t.length; )
                t[r++].guid = u;
            return this.click(f)
        },hover: function(n, t) {
            return this.mouseenter(n).mouseleave(t || n)
        }}), i.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(n, t) {
        i.fn[t] = function(n, i) {
            return i == null && (i = n, n = null), arguments.length > 0 ? this.on(t, null, n, i) : this.trigger(t)
        }, tf.test(t) && (i.event.fixHooks[t] = i.event.keyHooks), wu.test(t) && (i.event.fixHooks[t] = i.event.mouseHooks)
    }), function(n, t) {
        function ti(n, t, i, u) {
            for (var f = 0, e = t.length; f < e; f++)
                r(n, t[f], i, u)
        }
        function hi(n, t, i, f, e, o) {
            var s, h = u.setFilters[t.toLowerCase()];
            return h || r.error(t), (n || !(s = e)) && ti(n || "*", f, s = [], e), s.length > 0 ? h(s, i, o) : []
        }
        function oi(n, i, u, e, o) {
            for (var c, g, v, a, h, w, s, b, d = 0, nt = o.length, y = l.POS, tt = new RegExp("^" + y.source + "(?!" + f + ")", "i"), it = function() {
                for (var n = 1, i = arguments.length - 2; n < i; n++)
                    arguments[n] === t && (c[n] = t)
            }; d < nt; d++) {
                for (y.exec(""), n = o[d], a = [], v = 0, h = e; c = y.exec(n); )
                    b = y.lastIndex = c.index + c[0].length, b > v && (s = n.slice(v, c.index), v = b, w = [i], k.test(s) && (h && (w = h), h = e), (g = di.test(s)) && (s = s.slice(0, -5).replace(k, "$&*")), c.length > 1 && c[0].replace(tt, it), h = hi(s, c[1], c[2], w, h, g));
                h ? (a = a.concat(h), (s = n.slice(v)) && s !== ")" ? k.test(s) ? ti(s, a, u, e) : r(s, i, u, e ? e.concat(h) : h) : p.apply(u, a)) : r(n, i, u, e)
            }
            return nt === 1 ? u : r.uniqueSort(u)
        }
        function li(n, t, i) {
            for (var c, e, h, a = [], v = 0, f = ii.exec(n), o = !f.pop() && !f.pop(), p = o && n.match(ct) || [""], y = u.preFilter, w = u.filter, b = !i && t !== s; (e = p[v]) != null && o; v++)
                for (a.push(c = []), b && (e = " " + e); e; ) {
                    o = !1, (f = k.exec(e)) && (e = e.slice(f[0].length), o = c.push({part: f.pop().replace(rt, " "),captures: f}));
                    for (h in w)
                        (f = l[h].exec(e)) && (!y[h] || (f = y[h](f, t, i))) && (e = e.slice(f.shift().length), o = c.push({part: h,captures: f}));
                    if (!o)
                        break
                }
            return o || r.error(n), a
        }
        function fi(n, t, i) {
            var r = t.dir, u = gt++;
            return n || (n = function(n) {
                return n === i
            }), t.first ? function(t, i) {
                while (t = t[r])
                    if (t.nodeType === 1)
                        return n(t, i) && t
            } : function(t, i) {
                for (var f, e = u + "." + kt, s = e + "." + bt; t = t[r]; )
                    if (t.nodeType === 1) {
                        if ((f = t[o]) === s)
                            return t.sizset;
                        if (typeof f == "string" && f.indexOf(e) === 0) {
                            if (t.sizset)
                                return t
                        } else {
                            if (t[o] = s, n(t, i))
                                return t.sizset = !0, t;
                            t.sizset = !1
                        }
                    }
            }
        }
        function yi(n, t) {
            return n ? function(i, r) {
                var u = t(i, r);
                return u && n(u === !0 ? i : u, r)
            } : t
        }
        function pi(n, t, i) {
            for (var r, f, e = 0; r = n[e]; e++)
                u.relative[r.part] ? f = fi(f, u.relative[r.part], t) : (r.captures.push(t, i), f = yi(f, u.filter[r.part].apply(null, r.captures)));
            return f
        }
        function vi(n) {
            return function(t, i) {
                for (var r, u = 0; r = n[u]; u++)
                    if (r(t, i))
                        return !0;
                return !1
            }
        }
        var bt, kt, g, b, vt, s = n.document, e = s.documentElement, h = "undefined", tt = !1, dt = !0, gt = 0, c = [].slice, p = [].push, o = ("sizcache" + Math.random()).replace(".", ""), f = "[\\x20\\t\\r\\n\\f]", v = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+", wi = v.replace("w", "w#"), gi = "([*^$|!~]?=)", ri = "\\[" + f + "*(" + v + ")" + f + "*(?:" + gi + f + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + wi + ")|)|)" + f + "*\\]", ui = ":(" + v + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)", yt = ":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)", wt = f + "*([\\x20\\t\\r\\n\\f>+~])" + f + "*", at = "(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|" + ri + "|" + ui.replace(2, 7) + "|[^\\\\(),])+", rt = new RegExp("^" + f + "+|((?:^|[^\\\\])(?:\\\\.)*)" + f + "+$", "g"), k = new RegExp("^" + wt), ct = new RegExp(at + "?(?=" + f + "*,|$)", "g"), ii = new RegExp("^(?:(?!,)(?:(?:^|,)" + f + "*" + at + ")*?|" + f + "*(.*?))(\\)|$)"), tr = new RegExp(at.slice(19, -6) + "\\x20\\t\\r\\n\\f>+~])+|" + wt, "g"), nr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/, ht = /[\x20\t\r\n\f]*[+~]/, di = /:not\($/, ki = /h\d/i, bi = /input|select|textarea|button/i, y = /\\(?!\\)/g, l = {ID: new RegExp("^#(" + v + ")"),CLASS: new RegExp("^\\.(" + v + ")"),NAME: new RegExp("^\\[name=['\"]?(" + v + ")['\"]?\\]"),TAG: new RegExp("^(" + v.replace("[-", "[-\\*") + ")"),ATTR: new RegExp("^" + ri),PSEUDO: new RegExp("^" + ui),CHILD: new RegExp("^:(only|nth|last|first)-child(?:\\(" + f + "*(even|odd|(([+-]|)(\\d*)n|)" + f + "*(?:([+-]|)" + f + "*(\\d+)|))" + f + "*\\)|)", "i"),POS: new RegExp(yt, "ig"),needsContext: new RegExp("^" + f + "*[>+~]|" + yt, "i")}, lt = {}, ut = [], ot = {}, st = [], nt = function(n) {
            return n.sizzleFilter = !0, n
        }, w = function(n) {
            return function(t) {
                return t.nodeName.toLowerCase() === "input" && t.type === n
            }
        }, pt = function(n) {
            return function(t) {
                var i = t.nodeName.toLowerCase();
                return (i === "input" || i === "button") && t.type === n
            }
        }, a = function(n) {
            var t = !1, i = s.createElement("div");
            try {
                t = n(i)
            } catch (r) {
            }
            return i = null, t
        }, ir = a(function(n) {
            n.innerHTML = "<select></select>";
            var t = typeof n.lastChild.getAttribute("multiple");
            return t !== "boolean" && t !== "string"
        }), ai = a(function(n) {
            n.id = o + 0, n.innerHTML = "<a name='" + o + "'></a><div name='" + o + "'></div>", e.insertBefore(n, e.firstChild);
            var t = s.getElementsByName && s.getElementsByName(o).length === 2 + s.getElementsByName(o + 0).length;
            return vt = !s.getElementById(o), e.removeChild(n), t
        }), ei = a(function(n) {
            return n.appendChild(s.createComment("")), n.getElementsByTagName("*").length === 0
        }), ci = a(function(n) {
            return n.innerHTML = "<a href='#'></a>", n.firstChild && typeof n.firstChild.getAttribute !== h && n.firstChild.getAttribute("href") === "#"
        }), ni = a(function(n) {
            return n.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>", !n.getElementsByClassName || n.getElementsByClassName("e").length === 0 ? !1 : (n.lastChild.className = "e", n.getElementsByClassName("e").length !== 1)
        }), r = function(n, t, i, r) {
            i = i || [], t = t || s;
            var e, u, o, f, h = t.nodeType;
            if (h !== 1 && h !== 9)
                return [];
            if (!n || typeof n != "string")
                return i;
            if (o = it(t), !o && !r && (e = nr.exec(n)))
                if (f = e[1]) {
                    if (h === 9) {
                        if (u = t.getElementById(f), !u || !u.parentNode)
                            return i;
                        if (u.id === f)
                            return i.push(u), i
                    } else if (t.ownerDocument && (u = t.ownerDocument.getElementById(f)) && si(t, u) && u.id === f)
                        return i.push(u), i
                } else {
                    if (e[2])
                        return p.apply(i, c.call(t.getElementsByTagName(n), 0)), i;
                    if ((f = e[3]) && ni && t.getElementsByClassName)
                        return p.apply(i, c.call(t.getElementsByClassName(f), 0)), i
                }
            return d(n, t, i, r, o)
        }, u = r.selectors = {cacheLength: 50,match: l,order: ["ID", "TAG"],attrHandle: {},createPseudo: nt,find: {ID: vt ? function(n, t, i) {
                    if (typeof t.getElementById !== h && !i) {
                        var r = t.getElementById(n);
                        return r && r.parentNode ? [r] : []
                    }
                } : function(n, i, r) {
                    if (typeof i.getElementById !== h && !r) {
                        var u = i.getElementById(n);
                        return u ? u.id === n || typeof u.getAttributeNode !== h && u.getAttributeNode("id").value === n ? [u] : t : []
                    }
                },TAG: ei ? function(n, t) {
                    if (typeof t.getElementsByTagName !== h)
                        return t.getElementsByTagName(n)
                } : function(n, t) {
                    var f = t.getElementsByTagName(n), i, r, u;
                    if (n === "*") {
                        for (r = [], u = 0; i = f[u]; u++)
                            i.nodeType === 1 && r.push(i);
                        return r
                    }
                    return f
                }},relative: {">": {dir: "parentNode",first: !0}," ": {dir: "parentNode"},"+": {dir: "previousSibling",first: !0},"~": {dir: "previousSibling"}},preFilter: {ATTR: function(n) {
                    return n[1] = n[1].replace(y, ""), n[3] = (n[4] || n[5] || "").replace(y, ""), n[2] === "~=" && (n[3] = " " + n[3] + " "), n.slice(0, 4)
                },CHILD: function(n) {
                    return n[1] = n[1].toLowerCase(), n[1] === "nth" ? (n[2] || r.error(n[0]), n[3] = +(n[3] ? n[4] + (n[5] || 1) : 2 * (n[2] === "even" || n[2] === "odd")), n[4] = +(n[6] + n[7] || n[2] === "odd")) : n[2] && r.error(n[0]), n
                },PSEUDO: function(n) {
                    var i, t = n[4];
                    return l.CHILD.test(n[0]) ? null : (t && (i = ii.exec(t)) && i.pop() && (n[0] = n[0].slice(0, i[0].length - t.length - 1), t = i[0].slice(0, -1)), n.splice(2, 3, t || n[3]), n)
                }},filter: {ID: vt ? function(n) {
                    return n = n.replace(y, ""), function(t) {
                        return t.getAttribute("id") === n
                    }
                } : function(n) {
                    return n = n.replace(y, ""), function(t) {
                        var i = typeof t.getAttributeNode !== h && t.getAttributeNode("id");
                        return i && i.value === n
                    }
                },TAG: function(n) {
                    return n === "*" ? function() {
                        return !0
                    } : (n = n.replace(y, "").toLowerCase(), function(t) {
                        return t.nodeName && t.nodeName.toLowerCase() === n
                    })
                },CLASS: function(n) {
                    var t = lt[n];
                    return t || (t = lt[n] = new RegExp("(^|" + f + ")" + n + "(" + f + "|$)"), ut.push(n), ut.length > u.cacheLength && delete lt[ut.shift()]), function(n) {
                        return t.test(n.className || typeof n.getAttribute !== h && n.getAttribute("class") || "")
                    }
                },ATTR: function(n, t, i) {
                    return t ? function(u) {
                        var e = r.attr(u, n), f = e + "";
                        if (e == null)
                            return t === "!=";
                        switch (t) {
                            case "=":
                                return f === i;
                            case "!=":
                                return f !== i;
                            case "^=":
                                return i && f.indexOf(i) === 0;
                            case "*=":
                                return i && f.indexOf(i) > -1;
                            case "$=":
                                return i && f.substr(f.length - i.length) === i;
                            case "~=":
                                return (" " + f + " ").indexOf(i) > -1;
                            case "|=":
                                return f === i || f.substr(0, i.length + 1) === i + "-"
                        }
                    } : function(t) {
                        return r.attr(t, n) != null
                    }
                },CHILD: function(n, t, i, r) {
                    if (n === "nth") {
                        var u = gt++;
                        return function(n) {
                            var f, e, s = 0, t = n;
                            if (i === 1 && r === 0)
                                return !0;
                            if (f = n.parentNode, f && (f[o] !== u || !n.sizset)) {
                                for (t = f.firstChild; t; t = t.nextSibling)
                                    if (t.nodeType === 1 && (t.sizset = ++s, t === n))
                                        break;
                                f[o] = u
                            }
                            return e = n.sizset - r, i === 0 ? e === 0 : e % i == 0 && e / i >= 0
                        }
                    }
                    return function(t) {
                        var i = t;
                        switch (n) {
                            case "only":
                            case "first":
                                while (i = i.previousSibling)
                                    if (i.nodeType === 1)
                                        return !1;
                                if (n === "first")
                                    return !0;
                                i = t;
                            case "last":
                                while (i = i.nextSibling)
                                    if (i.nodeType === 1)
                                        return !1;
                                return !0
                        }
                    }
                },PSEUDO: function(n, t, i, f) {
                    var e = u.pseudos[n] || u.pseudos[n.toLowerCase()];
                    return e || r.error("unsupported pseudo: " + n), e.sizzleFilter ? e(t, i, f) : e
                }},pseudos: {not: nt(function(n, t, i) {
                    var r = et(n.replace(rt, "$1"), t, i);
                    return function(n) {
                        return !r(n)
                    }
                }),enabled: function(n) {
                    return n.disabled === !1
                },disabled: function(n) {
                    return n.disabled === !0
                },checked: function(n) {
                    var t = n.nodeName.toLowerCase();
                    return t === "input" && !!n.checked || t === "option" && !!n.selected
                },selected: function(n) {
                    return n.parentNode && n.parentNode.selectedIndex, n.selected === !0
                },parent: function(n) {
                    return !u.pseudos.empty(n)
                },empty: function(n) {
                    var t;
                    for (n = n.firstChild; n; ) {
                        if (n.nodeName > "@" || (t = n.nodeType) === 3 || t === 4)
                            return !1;
                        n = n.nextSibling
                    }
                    return !0
                },contains: nt(function(n) {
                    return function(t) {
                        return (t.textContent || t.innerText || ft(t)).indexOf(n) > -1
                    }
                }),has: nt(function(n) {
                    return function(t) {
                        return r(n, t).length > 0
                    }
                }),header: function(n) {
                    return ki.test(n.nodeName)
                },text: function(n) {
                    var t, i;
                    return n.nodeName.toLowerCase() === "input" && (t = n.type) === "text" && ((i = n.getAttribute("type")) == null || i.toLowerCase() === t)
                },radio: w("radio"),checkbox: w("checkbox"),file: w("file"),password: w("password"),image: w("image"),submit: pt("submit"),reset: pt("reset"),button: function(n) {
                    var t = n.nodeName.toLowerCase();
                    return t === "input" && n.type === "button" || t === "button"
                },input: function(n) {
                    return bi.test(n.nodeName)
                },focus: function(n) {
                    var t = n.ownerDocument;
                    return n === t.activeElement && (!t.hasFocus || t.hasFocus()) && (!!n.type || !!n.href)
                },active: function(n) {
                    return n === n.ownerDocument.activeElement
                }},setFilters: {first: function(n, t, i) {
                    return i ? n.slice(1) : [n[0]]
                },last: function(n, t, i) {
                    var r = n.pop();
                    return i ? n : [r]
                },even: function(n, t, i) {
                    for (var u = [], r = i ? 1 : 0, f = n.length; r < f; r = r + 2)
                        u.push(n[r]);
                    return u
                },odd: function(n, t, i) {
                    for (var u = [], r = i ? 0 : 1, f = n.length; r < f; r = r + 2)
                        u.push(n[r]);
                    return u
                },lt: function(n, t, i) {
                    return i ? n.slice(+t) : n.slice(0, +t)
                },gt: function(n, t, i) {
                    return i ? n.slice(0, +t + 1) : n.slice(+t + 1)
                },eq: function(n, t, i) {
                    var r = n.splice(+t, 1);
                    return i ? n : r
                }}}, et, d;
        u.setFilters.nth = u.setFilters.eq, u.filters = u.pseudos, ci || (u.attrHandle = {href: function(n) {
                return n.getAttribute("href", 2)
            },type: function(n) {
                return n.getAttribute("type")
            }}), ai && (u.order.push("NAME"), u.find.NAME = function(n, t) {
            if (typeof t.getElementsByName !== h)
                return t.getElementsByName(n)
        }), ni && (u.order.splice(1, 0, "CLASS"), u.find.CLASS = function(n, t, i) {
            if (typeof t.getElementsByClassName !== h && !i)
                return t.getElementsByClassName(n)
        });
        try {
            c.call(e.childNodes, 0)[0].nodeType
        } catch (rr) {
            c = function(n) {
                for (var t, i = []; t = this[n]; n++)
                    i.push(t);
                return i
            }
        }
        var it = r.isXML = function(n) {
            var t = n && (n.ownerDocument || n).documentElement;
            return t ? t.nodeName !== "HTML" : !1
        }, si = r.contains = e.compareDocumentPosition ? function(n, t) {
            return !!(n.compareDocumentPosition(t) & 16)
        } : e.contains ? function(n, t) {
            var r = n.nodeType === 9 ? n.documentElement : n, i = t.parentNode;
            return n === i || !!(i && i.nodeType === 1 && r.contains && r.contains(i))
        } : function(n, t) {
            while (t = t.parentNode)
                if (t === n)
                    return !0;
            return !1
        }, ft = r.getText = function(n) {
            var r, i = "", u = 0, t = n.nodeType;
            if (t) {
                if (t === 1 || t === 9 || t === 11) {
                    if (typeof n.textContent == "string")
                        return n.textContent;
                    for (n = n.firstChild; n; n = n.nextSibling)
                        i += ft(n)
                } else if (t === 3 || t === 4)
                    return n.nodeValue
            } else
                for (; r = n[u]; u++)
                    i += ft(r);
            return i
        };
        r.attr = function(n, t) {
            var i, r = it(n);
            return r || (t = t.toLowerCase()), u.attrHandle[t] ? u.attrHandle[t](n) : ir || r ? n.getAttribute(t) : (i = n.getAttributeNode(t), i ? typeof n[t] == "boolean" ? n[t] ? t : null : i.specified ? i.value : null : null)
        }, r.error = function(n) {
            throw new Error("Syntax error, unrecognized expression: " + n);
        }, [0, 0].sort(function() {
            return dt = 0
        }), e.compareDocumentPosition ? g = function(n, t) {
            return n === t ? (tt = !0, 0) : (!n.compareDocumentPosition || !t.compareDocumentPosition ? n.compareDocumentPosition : n.compareDocumentPosition(t) & 4) ? -1 : 1
        } : (g = function(n, t) {
            var i;
            if (n === t)
                return tt = !0, 0;
            if (n.sourceIndex && t.sourceIndex)
                return n.sourceIndex - t.sourceIndex;
            var e, h, u = [], f = [], o = n.parentNode, s = t.parentNode, r = o;
            if (o === s)
                return b(n, t);
            if (!o)
                return -1;
            if (!s)
                return 1;
            while (r)
                u.unshift(r), r = r.parentNode;
            for (r = s; r; )
                f.unshift(r), r = r.parentNode;
            for (e = u.length, h = f.length, i = 0; i < e && i < h; i++)
                if (u[i] !== f[i])
                    return b(u[i], f[i]);
            return i === e ? b(n, f[i], -1) : b(u[i], t, 1)
        }, b = function(n, t, i) {
            if (n === t)
                return i;
            for (var r = n.nextSibling; r; ) {
                if (r === t)
                    return -1;
                r = r.nextSibling
            }
            return 1
        }), r.uniqueSort = function(n) {
            var i, t = 1;
            if (g && (tt = dt, n.sort(g), tt))
                for (; i = n[t]; t++)
                    i === n[t - 1] && n.splice(t--, 1);
            return n
        }, et = r.compile = function(n, t, i) {
            var o, f, e, r = ot[n];
            if (r && r.context === t)
                return r;
            for (f = li(n, t, i), e = 0; o = f[e]; e++)
                f[e] = pi(o, t, i);
            return r = ot[n] = vi(f), r.context = t, r.runs = r.dirruns = 0, st.push(n), st.length > u.cacheLength && delete ot[st.shift()], r
        }, r.matches = function(n, t) {
            return r(n, null, null, t)
        }, r.matchesSelector = function(n, t) {
            return r(t, null, null, [n]).length > 0
        }, d = function(n, t, i, r, f) {
            n = n.replace(rt, "$1");
            var o, a, s, d, k, v, w, g, b, e = n.match(ct), h = n.match(tr), nt = t.nodeType;
            if (l.POS.test(n))
                return oi(n, t, i, r, e);
            if (r)
                o = c.call(r, 0);
            else if (e && e.length === 1) {
                if (h.length > 1 && nt === 9 && !f && (e = l.ID.exec(h[0]))) {
                    if (t = u.find.ID(e[1], t, f)[0], !t)
                        return i;
                    n = n.slice(h.shift().length)
                }
                for (g = (e = ht.exec(h[0])) && !e.index && t.parentNode || t, b = h.pop(), v = b.split(":not")[0], s = 0, d = u.order.length; s < d; s++)
                    if (w = u.order[s], e = l[w].exec(v)) {
                        if (o = u.find[w]((e[1] || "").replace(y, ""), g, f), o == null)
                            continue;
                        v === b && (n = n.slice(0, n.length - b.length) + v.replace(l[w], ""), n || p.apply(i, c.call(o, 0)));
                        break
                    }
            }
            if (n)
                for (a = et(n, t, f), kt = a.dirruns++, o == null && (o = u.find.TAG("*", ht.test(n) && t.parentNode || t)), s = 0; k = o[s]; s++)
                    bt = a.runs++, a(k, t) && i.push(k);
            return i
        }, s.querySelectorAll && function() {
            var s, h = d, l = /'|\\/g, v = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, n = [], t = [":active"], i = e.matchesSelector || e.mozMatchesSelector || e.webkitMatchesSelector || e.oMatchesSelector || e.msMatchesSelector;
            a(function(t) {
                t.innerHTML = "<select><option selected></option></select>", t.querySelectorAll("[selected]").length || n.push("\\[" + f + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"), t.querySelectorAll(":checked").length || n.push(":checked")
            }), a(function(t) {
                t.innerHTML = "<p test=''></p>", t.querySelectorAll("[test^='']").length && n.push("[*^$]=" + f + "*(?:\"\"|'')"), t.innerHTML = "<input type='hidden'>", t.querySelectorAll(":enabled").length || n.push(":enabled", ":disabled")
            }), n = n.length && new RegExp(n.join("|")), d = function(t, i, r, u, f) {
                if (!u && !f && (!n || !n.test(t)))
                    if (i.nodeType === 9)
                        try {
                            return p.apply(r, c.call(i.querySelectorAll(t), 0)), r
                        } catch (v) {
                        }
                    else if (i.nodeType === 1 && i.nodeName.toLowerCase() !== "object") {
                        var s = i.getAttribute("id"), e = s || o, a = ht.test(t) && i.parentNode || i;
                        s ? e = e.replace(l, "\\$&") : i.setAttribute("id", e);
                        try {
                            return p.apply(r, c.call(a.querySelectorAll(t.replace(ct, "[id='" + e + "'] $&")), 0)), r
                        } catch (v) {
                        }finally {
                            s || i.removeAttribute("id")
                        }
                    }
                return h(t, i, r, u, f)
            }, i && (a(function(n) {
                s = i.call(n, "div");
                try {
                    i.call(n, "[test!='']:sizzle"), t.push(u.match.PSEUDO)
                } catch (r) {
                }
            }), t = new RegExp(t.join("|")), r.matchesSelector = function(u, f) {
                if (f = f.replace(v, "='$1']"), !it(u) && !t.test(f) && (!n || !n.test(f)))
                    try {
                        var e = i.call(u, f);
                        if (e || s || u.document && u.document.nodeType !== 11)
                            return e
                    } catch (o) {
                    }
                return r(f, null, null, [u]).length > 0
            })
        }(), r.attr = i.attr, i.find = r, i.expr = r.selectors, i.expr[":"] = i.expr.pseudos, i.unique = r.uniqueSort, i.text = r.getText, i.isXMLDoc = r.isXML, i.contains = r.contains
    }(n);
    var so = /Until$/, uo = /^(?:parents|prev(?:Until|All))/, ge = /^.[^:#\[\.,]*$/, ai = i.expr.match.needsContext, ae = {children: !0,contents: !0,next: !0,prev: !0};
    i.fn.extend({find: function(n) {
            var t, f, o, u, e, r, s = this;
            if (typeof n != "string")
                return i(n).filter(function() {
                    for (t = 0, f = s.length; t < f; t++)
                        if (i.contains(s[t], this))
                            return !0
                });
            for (r = this.pushStack("", "find", n), t = 0, f = this.length; t < f; t++)
                if (o = r.length, i.find(n, this[t], r), t > 0)
                    for (u = o; u < r.length; u++)
                        for (e = 0; e < o; e++)
                            if (r[e] === r[u]) {
                                r.splice(u--, 1);
                                break
                            }
            return r
        },has: function(n) {
            var t, r = i(n, this), u = r.length;
            return this.filter(function() {
                for (t = 0; t < u; t++)
                    if (i.contains(this, r[t]))
                        return !0
            })
        },not: function(n) {
            return this.pushStack(eu(this, n, !1), "not", n)
        },filter: function(n) {
            return this.pushStack(eu(this, n, !0), "filter", n)
        },is: function(n) {
            return !!n && (typeof n == "string" ? ai.test(n) ? i(n, this.context).index(this[0]) >= 0 : i.filter(n, this).length > 0 : this.filter(n).length > 0)
        },closest: function(n, t) {
            for (var r, f = 0, o = this.length, u = [], e = ai.test(n) || typeof n != "string" ? i(n, t || this.context) : 0; f < o; f++)
                for (r = this[f]; r && r.ownerDocument && r !== t && r.nodeType !== 11; ) {
                    if (e ? e.index(r) > -1 : i.find.matchesSelector(r, n)) {
                        u.push(r);
                        break
                    }
                    r = r.parentNode
                }
            return u = u.length > 1 ? i.unique(u) : u, this.pushStack(u, "closest", n)
        },index: function(n) {
            return n ? typeof n == "string" ? i.inArray(this[0], i(n)) : i.inArray(n.jquery ? n[0] : n, this) : this[0] && this[0].parentNode ? this.prevAll().length : -1
        },add: function(n, t) {
            var u = typeof n == "string" ? i(n, t) : i.makeArray(n && n.nodeType ? [n] : n), r = i.merge(this.get(), u);
            return this.pushStack(k(u[0]) || k(r[0]) ? r : i.unique(r))
        },addBack: function(n) {
            return this.add(n == null ? this.prevObject : this.prevObject.filter(n))
        }}), i.fn.andSelf = i.fn.addBack, i.each({parent: function(n) {
            var t = n.parentNode;
            return t && t.nodeType !== 11 ? t : null
        },parents: function(n) {
            return i.dir(n, "parentNode")
        },parentsUntil: function(n, t, r) {
            return i.dir(n, "parentNode", r)
        },next: function(n) {
            return ou(n, "nextSibling")
        },prev: function(n) {
            return ou(n, "previousSibling")
        },nextAll: function(n) {
            return i.dir(n, "nextSibling")
        },prevAll: function(n) {
            return i.dir(n, "previousSibling")
        },nextUntil: function(n, t, r) {
            return i.dir(n, "nextSibling", r)
        },prevUntil: function(n, t, r) {
            return i.dir(n, "previousSibling", r)
        },siblings: function(n) {
            return i.sibling((n.parentNode || {}).firstChild, n)
        },children: function(n) {
            return i.sibling(n.firstChild)
        },contents: function(n) {
            return i.nodeName(n, "iframe") ? n.contentDocument || n.contentWindow.document : i.merge([], n.childNodes)
        }}, function(n, t) {
        i.fn[n] = function(r, u) {
            var f = i.map(this, t, r);
            return so.test(n) || (u = r), u && typeof u == "string" && (f = i.filter(u, f)), f = this.length > 1 && !ae[n] ? i.unique(f) : f, this.length > 1 && uo.test(n) && (f = f.reverse()), this.pushStack(f, n, o.call(arguments).join(","))
        }
    }), i.extend({filter: function(n, t, r) {
            return r && (n = ":not(" + n + ")"), t.length === 1 ? i.find.matchesSelector(t[0], n) ? [t[0]] : [] : i.find.matches(n, t)
        },dir: function(n, r, u) {
            for (var e = [], f = n[r]; f && f.nodeType !== 9 && (u === t || f.nodeType !== 1 || !i(f).is(u)); )
                f.nodeType === 1 && e.push(f), f = f[r];
            return e
        },sibling: function(n, t) {
            for (var i = []; n; n = n.nextSibling)
                n.nodeType === 1 && n !== t && i.push(n);
            return i
        }});
    var vi = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", re = / jQuery\d+="(?:null|\d+)"/g, pt = /^\s+/, bi = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, di = /<([\w:]+)/, oe = /<tbody/i, se = /<|&#?\w+;/, he = /<(?:script|style|link)/i, ce = /<(?:script|object|embed|option|style)/i, at = new RegExp("<(?:" + vi + ")[\\s/>]", "i"), tr = /^(?:checkbox|radio)$/, ir = /checked\s*(?:[^=]|=\s*.checked.)/i, ye = /\/(java|ecma)script/i, pe = /^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g, e = {option: [1, "<select multiple='multiple'>", "</select>"],legend: [1, "<fieldset>", "</fieldset>"],thead: [1, "<table>", "</table>"],tr: [2, "<table><tbody>", "</tbody></table>"],td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],area: [1, "<map>", "</map>"],_default: [0, "", ""]}, ur = fu(r), kt = ur.appendChild(r.createElement("div"));
    e.optgroup = e.option, e.tbody = e.tfoot = e.colgroup = e.caption = e.thead, e.th = e.td, i.support.htmlSerialize || (e._default = [1, "X<div>", "</div>"]), i.fn.extend({text: function(n) {
            return i.access(this, function(n) {
                return n === t ? i.text(this) : this.empty().append((this[0] && this[0].ownerDocument || r).createTextNode(n))
            }, null, n, arguments.length)
        },wrapAll: function(n) {
            if (i.isFunction(n))
                return this.each(function(t) {
                    i(this).wrapAll(n.call(this, t))
                });
            if (this[0]) {
                var t = i(n, this[0].ownerDocument).eq(0).clone(!0);
                this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
                    for (var n = this; n.firstChild && n.firstChild.nodeType === 1; )
                        n = n.firstChild;
                    return n
                }).append(this)
            }
            return this
        },wrapInner: function(n) {
            return i.isFunction(n) ? this.each(function(t) {
                i(this).wrapInner(n.call(this, t))
            }) : this.each(function() {
                var t = i(this), r = t.contents();
                r.length ? r.wrapAll(n) : t.append(n)
            })
        },wrap: function(n) {
            var t = i.isFunction(n);
            return this.each(function(r) {
                i(this).wrapAll(t ? n.call(this, r) : n)
            })
        },unwrap: function() {
            return this.parent().each(function() {
                i.nodeName(this, "body") || i(this).replaceWith(this.childNodes)
            }).end()
        },append: function() {
            return this.domManip(arguments, !0, function(n) {
                (this.nodeType === 1 || this.nodeType === 11) && this.appendChild(n)
            })
        },prepend: function() {
            return this.domManip(arguments, !0, function(n) {
                (this.nodeType === 1 || this.nodeType === 11) && this.insertBefore(n, this.firstChild)
            })
        },before: function() {
            if (!k(this[0]))
                return this.domManip(arguments, !1, function(n) {
                    this.parentNode.insertBefore(n, this)
                });
            if (arguments.length) {
                var n = i.clean(arguments);
                return this.pushStack(i.merge(n, this), "before", this.selector)
            }
        },after: function() {
            if (!k(this[0]))
                return this.domManip(arguments, !1, function(n) {
                    this.parentNode.insertBefore(n, this.nextSibling)
                });
            if (arguments.length) {
                var n = i.clean(arguments);
                return this.pushStack(i.merge(this, n), "after", this.selector)
            }
        },remove: function(n, t) {
            for (var r, u = 0; (r = this[u]) != null; u++)
                (!n || i.filter(n, [r]).length) && (!t && r.nodeType === 1 && (i.cleanData(r.getElementsByTagName("*")), i.cleanData([r])), r.parentNode && r.parentNode.removeChild(r));
            return this
        },empty: function() {
            for (var n, t = 0; (n = this[t]) != null; t++)
                for (n.nodeType === 1 && i.cleanData(n.getElementsByTagName("*")); n.firstChild; )
                    n.removeChild(n.firstChild);
            return this
        },clone: function(n, t) {
            return n = n == null ? !1 : n, t = t == null ? n : t, this.map(function() {
                return i.clone(this, n, t)
            })
        },html: function(n) {
            return i.access(this, function(n) {
                var r = this[0] || {}, u = 0, f = this.length;
                if (n === t)
                    return r.nodeType === 1 ? r.innerHTML.replace(re, "") : t;
                if (typeof n == "string" && !he.test(n) && (i.support.htmlSerialize || !at.test(n)) && (i.support.leadingWhitespace || !pt.test(n)) && !e[(di.exec(n) || ["", ""])[1].toLowerCase()]) {
                    n = n.replace(bi, "<$1></$2>");
                    try {
                        for (; u < f; u++)
                            r = this[u] || {}, r.nodeType === 1 && (i.cleanData(r.getElementsByTagName("*")), r.innerHTML = n);
                        r = 0
                    } catch (o) {
                    }
                }
                r && this.empty().append(n)
            }, null, n, arguments.length)
        },replaceWith: function(n) {
            return k(this[0]) ? this.length ? this.pushStack(i(i.isFunction(n) ? n() : n), "replaceWith", n) : this : i.isFunction(n) ? this.each(function(t) {
                var r = i(this), u = r.html();
                r.replaceWith(n.call(this, t, u))
            }) : (typeof n != "string" && (n = i(n).detach()), this.each(function() {
                var t = this.nextSibling, r = this.parentNode;
                i(this).remove(), t ? i(t).before(n) : i(r).append(n)
            }))
        },detach: function(n) {
            return this.remove(n, !0)
        },domManip: function(n, r, u) {
            n = [].concat.apply([], n);
            var h, o, f, a, e = 0, s = n[0], c = [], l = this.length;
            if (!i.support.checkClone && l > 1 && typeof s == "string" && ir.test(s))
                return this.each(function() {
                    i(this).domManip(n, r, u)
                });
            if (i.isFunction(s))
                return this.each(function(f) {
                    var e = i(this);
                    n[0] = s.call(this, f, r ? e.html() : t), e.domManip(n, r, u)
                });
            if (this[0]) {
                if (h = i.buildFragment(n, this, c), f = h.fragment, o = f.firstChild, f.childNodes.length === 1 && (f = o), o)
                    for (r = r && i.nodeName(o, "tr"), a = h.cacheable || l - 1; e < l; e++)
                        u.call(r && i.nodeName(this[e], "table") ? pf(this[e], "tbody") : this[e], e === a ? f : i.clone(f, !0, !0));
                f = o = null, c.length && i.each(c, function(n, t) {
                    t.src ? i.ajax ? i.ajax({url: t.src,type: "GET",dataType: "script",async: !1,global: !1,throws: !0}) : i.error("no ajax") : i.globalEval((t.text || t.textContent || t.innerHTML || "").replace(pe, "")), t.parentNode && t.parentNode.removeChild(t)
                })
            }
            return this
        }}), i.buildFragment = function(n, u, f) {
        var o, s, h, e = n[0];
        return u = u || r, u = (u[0] || u).ownerDocument || u[0] || u, typeof u.createDocumentFragment == "undefined" && (u = r), n.length === 1 && typeof e == "string" && e.length < 512 && u === r && e.charAt(0) === "<" && !ce.test(e) && (i.support.checkClone || !ir.test(e)) && (i.support.html5Clone || !at.test(e)) && (s = !0, o = i.fragments[e], h = o !== t), o || (o = u.createDocumentFragment(), i.clean(n, u, o, f), s && (i.fragments[e] = h && o)), {fragment: o,cacheable: s}
    }, i.fragments = {}, i.each({appendTo: "append",prependTo: "prepend",insertBefore: "before",insertAfter: "after",replaceAll: "replaceWith"}, function(n, t) {
        i.fn[n] = function(r) {
            var o, u = 0, s = [], f = i(r), h = f.length, e = this.length === 1 && this[0].parentNode;
            if ((e == null || e && e.nodeType === 11 && e.childNodes.length === 1) && h === 1)
                return f[t](this[0]), this;
            for (; u < h; u++)
                o = (u > 0 ? this.clone(!0) : this).get(), i(f[u])[t](o), s = s.concat(o);
            return this.pushStack(s, n, f.selector)
        }
    }), i.extend({clone: function(n, t, r) {
            var f, o, u, e;
            if (i.support.html5Clone || i.isXMLDoc(n) || !at.test("<" + n.nodeName + ">") ? e = n.cloneNode(!0) : (kt.innerHTML = n.outerHTML, kt.removeChild(e = kt.firstChild)), (!i.support.noCloneEvent || !i.support.noCloneChecked) && (n.nodeType === 1 || n.nodeType === 11) && !i.isXMLDoc(n))
                for (ru(n, e), f = ct(n), o = ct(e), u = 0; f[u]; ++u)
                    o[u] && ru(f[u], o[u]);
            if (t && (uu(n, e), r))
                for (f = ct(n), o = ct(e), u = 0; f[u]; ++u)
                    uu(f[u], o[u]);
            return f = o = null, e
        },clean: function(n, t, u, f) {
            var a, l, o, k, y, d, s, p, v, g, w, b, h = 0, c = [];
            for (t && typeof t.createDocumentFragment != "undefined" || (t = r), l = t === r && ur; (o = n[h]) != null; h++)
                if (typeof o == "number" && (o += ""), o) {
                    if (typeof o == "string")
                        if (se.test(o)) {
                            for (l = l || fu(t), s = s || l.appendChild(t.createElement("div")), o = o.replace(bi, "<$1></$2>"), k = (di.exec(o) || ["", ""])[1].toLowerCase(), y = e[k] || e._default, d = y[0], s.innerHTML = y[1] + o + y[2]; d--; )
                                s = s.lastChild;
                            if (!i.support.tbody)
                                for (p = oe.test(o), v = k === "table" && !p ? s.firstChild && s.firstChild.childNodes : y[1] === "<table>" && !p ? s.childNodes : [], a = v.length - 1; a >= 0; --a)
                                    i.nodeName(v[a], "tbody") && !v[a].childNodes.length && v[a].parentNode.removeChild(v[a]);
                            !i.support.leadingWhitespace && pt.test(o) && s.insertBefore(t.createTextNode(pt.exec(o)[0]), s.firstChild), o = s.childNodes, s = l.lastChild
                        } else
                            o = t.createTextNode(o);
                    o.nodeType ? c.push(o) : c = i.merge(c, o)
                }
            if (s && (l.removeChild(s), o = s = l = null), !i.support.appendChecked)
                for (h = 0; (o = c[h]) != null; h++)
                    i.nodeName(o, "input") ? iu(o) : typeof o.getElementsByTagName != "undefined" && i.grep(o.getElementsByTagName("input"), iu);
            if (u)
                for (w = function(n) {
                    if (!n.type || ye.test(n.type))
                        return f ? f.push(n.parentNode ? n.parentNode.removeChild(n) : n) : u.appendChild(n)
                }, h = 0; (o = c[h]) != null; h++)
                    i.nodeName(o, "script") && w(o) || (u.appendChild(o), typeof o.getElementsByTagName != "undefined" && (b = i.grep(i.merge([], o.getElementsByTagName("script")), w), c.splice.apply(c, [h + 1, 0].concat(b)), h += b.length));
            return c
        },cleanData: function(n, t) {
            for (var f, u, r, e, h = 0, o = i.expando, s = i.cache, c = i.support.deleteExpando, l = i.event.special; (r = n[h]) != null; h++)
                if ((t || i.acceptData(r)) && (u = r[o], f = u && s[u], f)) {
                    if (f.events)
                        for (e in f.events)
                            l[e] ? i.event.remove(r, e) : i.removeEvent(r, e, f.handle);
                    s[u] && (delete s[u], c ? delete r[o] : r.removeAttribute ? r.removeAttribute(o) : r[o] = null, i.deletedIds.push(u))
                }
        }}), function() {
        var t, n;
        i.uaMatch = function(n) {
            n = n.toLowerCase();
            var t = /(chrome)[ \/]([\w.]+)/.exec(n) || /(webkit)[ \/]([\w.]+)/.exec(n) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(n) || /(msie) ([\w.]+)/.exec(n) || n.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(n) || [];
            return {browser: t[1] || "",version: t[2] || "0"}
        }, t = i.uaMatch(be.userAgent), n = {}, t.browser && (n[t.browser] = !0, n.version = t.version), n.webkit && (n.safari = !0), i.browser = n, i.sub = function() {
            function n(t, i) {
                return new n.fn.init(t, i)
            }
            i.extend(!0, n, this), n.superclass = this, n.fn = n.prototype = this(), n.fn.constructor = n, n.sub = this.sub, n.fn.init = function t(c, r) {
                return r && r instanceof i && !(r instanceof n) && (r = n(r)), i.fn.init.call(this, t, r, u)
            }, n.fn.init.prototype = n.fn;
            var u = n(r);
            return n
        }
    }();
    var u, w, y, dt = /alpha\([^)]*\)/i, io = /opacity=([^)]*)/, ro = /^(top|right|bottom|left)$/, pi = /^margin/, fo = new RegExp("^(" + it + ")(.*)$", "i"), d = new RegExp("^(" + it + ")(?!px)[a-z%]+$", "i"), oo = new RegExp("^([-+])=(" + it + ")", "i"), ti = {}, ho = {position: "absolute",visibility: "hidden",display: "block"}, si = {letterSpacing: 0,fontWeight: 400,lineHeight: 1}, a = ["Top", "Right", "Bottom", "Left"], er = ["Webkit", "O", "Moz", "ms"], ao = i.fn.toggle;
    i.fn.extend({css: function(n, r) {
            return i.access(this, function(n, r, u) {
                return u !== t ? i.style(n, r, u) : i.css(n, r)
            }, n, r, arguments.length > 1)
        },show: function() {
            return nu(this, !0)
        },hide: function() {
            return nu(this)
        },toggle: function(n, t) {
            var r = typeof n == "boolean";
            return i.isFunction(n) && i.isFunction(t) ? ao.apply(this, arguments) : this.each(function() {
                (r ? n : lt(this)) ? i(this).show() : i(this).hide()
            })
        }}), i.extend({cssHooks: {opacity: {get: function(n, t) {
                    if (t) {
                        var i = u(n, "opacity");
                        return i === "" ? "1" : i
                    }
                }}},cssNumber: {fillOpacity: !0,fontWeight: !0,lineHeight: !0,opacity: !0,orphans: !0,widows: !0,zIndex: !0,zoom: !0},cssProps: {float: i.support.cssFloat ? "cssFloat" : "styleFloat"},style: function(n, r, u, f) {
            if (n && n.nodeType !== 3 && n.nodeType !== 8 && n.style) {
                var o, s, e, h = i.camelCase(r), c = n.style;
                if (r = i.cssProps[h] || (i.cssProps[h] = tu(c, h)), e = i.cssHooks[r] || i.cssHooks[h], u === t)
                    return e && "get" in e && (o = e.get(n, !1, f)) !== t ? o : c[r];
                if ((s = typeof u, s === "string" && (o = oo.exec(u)) && (u = (o[1] + 1) * o[2] + parseFloat(i.css(n, r)), s = "number"), u != null && (s !== "number" || !isNaN(u))) && (s === "number" && !i.cssNumber[h] && (u += "px"), !e || !("set" in e) || (u = e.set(n, u, f)) !== t))
                    try {
                        c[r] = u
                    } catch (l) {
                    }
            }
        },css: function(n, r, f, e) {
            var o, c, s, h = i.camelCase(r);
            return r = i.cssProps[h] || (i.cssProps[h] = tu(n.style, h)), s = i.cssHooks[r] || i.cssHooks[h], s && "get" in s && (o = s.get(n, !0, e)), o === t && (o = u(n, r)), o === "normal" && r in si && (o = si[r]), f || e !== t ? (c = parseFloat(o), f || i.isNumeric(c) ? c || 0 : o) : o
        },swap: function(n, t, i) {
            var u, r, f = {};
            for (r in t)
                f[r] = n.style[r], n.style[r] = t[r];
            u = i.call(n);
            for (r in t)
                n.style[r] = f[r];
            return u
        }}), n.getComputedStyle ? u = function(n, t) {
        var u, e, o, s, f = getComputedStyle(n, null), r = n.style;
        return f && (u = f[t], u === "" && !i.contains(n.ownerDocument.documentElement, n) && (u = i.style(n, t)), d.test(u) && pi.test(t) && (e = r.width, o = r.minWidth, s = r.maxWidth, r.minWidth = r.maxWidth = r.width = u, u = f.width, r.width = e, r.minWidth = o, r.maxWidth = s)), u
    } : r.documentElement.currentStyle && (u = function(n, t) {
        var f, u, i = n.currentStyle && n.currentStyle[t], r = n.style;
        return i == null && r && r[t] && (i = r[t]), d.test(i) && !ro.test(t) && (f = r.left, u = n.runtimeStyle && n.runtimeStyle.left, u && (n.runtimeStyle.left = n.currentStyle.left), r.left = t === "fontSize" ? "1em" : i, i = r.pixelLeft + "px", r.left = f, u && (n.runtimeStyle.left = u)), i === "" ? "auto" : i
    }), i.each(["height", "width"], function(n, t) {
        i.cssHooks[t] = {get: function(n, r, f) {
                if (r)
                    return n.offsetWidth !== 0 || u(n, "display") !== "none" ? kr(n, t, f) : i.swap(n, ho, function() {
                        return kr(n, t, f)
                    })
            },set: function(n, r, u) {
                return gr(n, r, u ? dr(n, t, u, i.support.boxSizing && i.css(n, "boxSizing") === "border-box") : 0)
            }}
    }), i.support.opacity || (i.cssHooks.opacity = {get: function(n, t) {
            return io.test((t && n.currentStyle ? n.currentStyle.filter : n.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : ""
        },set: function(n, t) {
            var r = n.style, u = n.currentStyle, e = i.isNumeric(t) ? "alpha(opacity=" + t * 100 + ")" : "", f = u && u.filter || r.filter || "";
            (r.zoom = 1, t >= 1 && i.trim(f.replace(dt, "")) === "" && r.removeAttribute && (r.removeAttribute("filter"), u && !u.filter)) || (r.filter = dt.test(f) ? f.replace(dt, e) : f + " " + e)
        }}), i(function() {
        i.support.reliableMarginRight || (i.cssHooks.marginRight = {get: function(n, t) {
                return i.swap(n, {display: "inline-block"}, function() {
                    if (t)
                        return u(n, "marginRight")
                })
            }}), !i.support.pixelPosition && i.fn.position && i.each(["top", "left"], function(n, t) {
            i.cssHooks[t] = {get: function(n, r) {
                    if (r) {
                        var f = u(n, t);
                        return d.test(f) ? i(n).position()[t] + "px" : f
                    }
                }}
        })
    }), i.expr && i.expr.filters && (i.expr.filters.hidden = function(n) {
        return n.offsetWidth === 0 && n.offsetHeight === 0 || !i.support.reliableHiddenOffsets && (n.style && n.style.display || u(n, "display")) === "none"
    }, i.expr.filters.visible = function(n) {
        return !i.expr.filters.hidden(n)
    }), i.each({margin: "",padding: "",border: "Width"}, function(n, t) {
        i.cssHooks[n + t] = {expand: function(i) {
                for (var u = typeof i == "string" ? i.split(" ") : [i], f = {}, r = 0; r < 4; r++)
                    f[n + a[r] + t] = u[r] || u[r - 2] || u[0];
                return f
            }}, pi.test(n) || (i.cssHooks[n + t].set = gr)
    });
    var vo = /%20/g, fe = /\[\]$/, gi = /\r?\n/g, yo = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, ie = /^(?:select|textarea)/i;
    i.fn.extend({serialize: function() {
            return i.param(this.serializeArray())
        },serializeArray: function() {
            return this.map(function() {
                return this.elements ? i.makeArray(this.elements) : this
            }).filter(function() {
                return this.name && !this.disabled && (this.checked || ie.test(this.nodeName) || yo.test(this.type))
            }).map(function(n, t) {
                var r = i(this).val();
                return r == null ? null : i.isArray(r) ? i.map(r, function(n) {
                    return {name: t.name,value: n.replace(gi, "\r\n")}
                }) : {name: t.name,value: r.replace(gi, "\r\n")}
            }).get()
        }}), i.param = function(n, r) {
        var u, f = [], e = function(n, t) {
            t = i.isFunction(t) ? t() : t == null ? "" : t, f[f.length] = encodeURIComponent(n) + "=" + encodeURIComponent(t)
        };
        if (r === t && (r = i.ajaxSettings && i.ajaxSettings.traditional), i.isArray(n) || n.jquery && !i.isPlainObject(n))
            i.each(n, function() {
                e(this.name, this.value)
            });
        else
            for (u in n)
                gt(u, n[u], r, e);
        return f.join("&").replace(vo, "+")
    };
    var h, c, bu = /#.*$/, ku = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, du = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, gu = /^(?:GET|HEAD)$/, nf = /^\/\//, wi = /\?/, rf = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, uf = /([?&])_=[^&]*/, ki = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, rr = i.fn.load, ni = {}, fr = {}, yi = ["*/"] + ["*"];
    try {
        h = ke.href
    } catch (po) {
        h = r.createElement("a"), h.href = "", h = h.href
    }
    c = ki.exec(h.toLowerCase()) || [], i.fn.load = function(n, r, u) {
        if (typeof n != "string" && rr)
            return rr.apply(this, arguments);
        if (!this.length)
            return this;
        var f, o, s, h = this, e = n.indexOf(" ");
        return e >= 0 && (f = n.slice(e, n.length), n = n.slice(0, e)), i.isFunction(r) ? (u = r, r = t) : typeof r == "object" && (o = "POST"), i.ajax({url: n,type: o,dataType: "html",data: r,complete: function(n, t) {
                u && h.each(u, s || [n.responseText, t, n])
            }}).done(function(n) {
            s = arguments, h.html(f ? i("<div>").append(n.replace(rf, "")).find(f) : n)
        }), this
    }, i.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function(n, t) {
        i.fn[t] = function(n) {
            return this.on(t, n)
        }
    }), i.each(["get", "post"], function(n, r) {
        i[r] = function(n, u, f, e) {
            return i.isFunction(u) && (e = e || f, f = u, u = t), i.ajax({type: r,url: n,data: u,success: f,dataType: e})
        }
    }), i.extend({getScript: function(n, r) {
            return i.get(n, t, r, "script")
        },getJSON: function(n, t, r) {
            return i.get(n, t, r, "json")
        },ajaxSetup: function(n, t) {
            return t ? pr(n, i.ajaxSettings) : (t = n, n = i.ajaxSettings), pr(n, t), n
        },ajaxSettings: {url: h,isLocal: du.test(c[1]),global: !0,type: "GET",contentType: "application/x-www-form-urlencoded; charset=UTF-8",processData: !0,async: !0,accepts: {xml: "application/xml, text/xml",html: "text/html",text: "text/plain",json: "application/json, text/javascript","*": yi},contents: {xml: /xml/,html: /html/,json: /json/},responseFields: {xml: "responseXML",text: "responseText"},converters: {"* text": n.String,"text html": !0,"text json": i.parseJSON,"text xml": i.parseXML},flatOptions: {context: !0,url: !0}},ajaxPrefilter: wr(ni),ajaxTransport: wr(fr),ajax: function(n, r) {
            function b(n, r, h, c) {
                var l, d, b, tt, p, a = r;
                e !== 2 && (e = 2, k && clearTimeout(k), v = t, it = c || "", f.readyState = n > 0 ? 4 : 0, h && (tt = ue(u, f, h)), n >= 200 && n < 300 || n === 304 ? (u.ifModified && (p = f.getResponseHeader("Last-Modified"), p && (i.lastModified[o] = p), p = f.getResponseHeader("Etag"), p && (i.etag[o] = p)), n === 304 ? (a = "notmodified", l = !0) : (l = lo(u, tt), a = l.state, d = l.data, b = l.error, l = !b)) : (b = a, (!a || n) && (a = "error", n < 0 && (n = 0))), f.status = n, f.statusText = "" + (r || a), l ? nt.resolveWith(s, [d, a, f]) : nt.rejectWith(s, [f, a, b]), f.statusCode(w), w = t, y && g.trigger("ajax" + (l ? "Success" : "Error"), [f, u, l ? d : b]), rt.fireWith(s, [f, a]), y && (g.trigger("ajaxComplete", [f, u]), --i.active || i.event.trigger("ajaxStop")))
            }
            var tt, d;
            typeof n == "object" && (r = n, n = t), r = r || {};
            var o, it, p, v, k, h, y, a, u = i.ajaxSetup({}, r), s = u.context || u, g = s !== u && (s.nodeType || s instanceof i) ? i(s) : i.event, nt = i.Deferred(), rt = i.Callbacks("once memory"), w = u.statusCode || {}, ft = {}, ut = {}, e = 0, et = "canceled", f = {readyState: 0,setRequestHeader: function(n, t) {
                    if (!e) {
                        var i = n.toLowerCase();
                        n = ut[i] = ut[i] || n, ft[n] = t
                    }
                    return this
                },getAllResponseHeaders: function() {
                    return e === 2 ? it : null
                },getResponseHeader: function(n) {
                    var i;
                    if (e === 2) {
                        if (!p)
                            for (p = {}; i = ku.exec(it); )
                                p[i[1].toLowerCase()] = i[2];
                        i = p[n.toLowerCase()]
                    }
                    return i === t ? null : i
                },overrideMimeType: function(n) {
                    return e || (u.mimeType = n), this
                },abort: function(n) {
                    return n = n || et, v && v.abort(n), b(0, n), this
                }};
            if (nt.promise(f), f.success = f.done, f.error = f.fail, f.complete = rt.add, f.statusCode = function(n) {
                if (n) {
                    var t;
                    if (e < 2)
                        for (t in n)
                            w[t] = [w[t], n[t]];
                    else
                        t = n[f.status], f.always(t)
                }
                return this
            }, u.url = ((n || u.url) + "").replace(bu, "").replace(nf, c[1] + "//"), u.dataTypes = i.trim(u.dataType || "*").toLowerCase().split(l), u.crossDomain == null && (h = ki.exec(u.url.toLowerCase()), u.crossDomain = !(!h || h[1] == c[1] && h[2] == c[2] && (h[3] || (h[1] === "http:" ? 80 : 443)) == (c[3] || (c[1] === "http:" ? 80 : 443)))), u.data && u.processData && typeof u.data != "string" && (u.data = i.param(u.data, u.traditional)), ot(ni, u, r, f), e === 2)
                return f;
            y = u.global, u.type = u.type.toUpperCase(), u.hasContent = !gu.test(u.type), y && i.active++ == 0 && i.event.trigger("ajaxStart"), u.hasContent || (u.data && (u.url += (wi.test(u.url) ? "&" : "?") + u.data, delete u.data), o = u.url, u.cache === !1 && (tt = i.now(), d = u.url.replace(uf, "$1_=" + tt), u.url = d + (d === u.url ? (wi.test(u.url) ? "&" : "?") + "_=" + tt : ""))), (u.data && u.hasContent && u.contentType !== !1 || r.contentType) && f.setRequestHeader("Content-Type", u.contentType), u.ifModified && (o = o || u.url, i.lastModified[o] && f.setRequestHeader("If-Modified-Since", i.lastModified[o]), i.etag[o] && f.setRequestHeader("If-None-Match", i.etag[o])), f.setRequestHeader("Accept", u.dataTypes[0] && u.accepts[u.dataTypes[0]] ? u.accepts[u.dataTypes[0]] + (u.dataTypes[0] !== "*" ? ", " + yi + "; q=0.01" : "") : u.accepts["*"]);
            for (a in u.headers)
                f.setRequestHeader(a, u.headers[a]);
            if (!u.beforeSend || u.beforeSend.call(s, f, u) !== !1 && e !== 2) {
                et = "abort";
                for (a in {success: 1,error: 1,complete: 1})
                    f[a](u[a]);
                if (v = ot(fr, u, r, f), v) {
                    f.readyState = 1, y && g.trigger("ajaxSend", [f, u]), u.async && u.timeout > 0 && (k = setTimeout(function() {
                        f.abort("timeout")
                    }, u.timeout));
                    try {
                        e = 1, v.send(ft, b)
                    } catch (st) {
                        if (e < 2)
                            b(-1, st);
                        else
                            throw st;
                    }
                } else
                    b(-1, "No Transport");
                return f
            }
            return f.abort()
        },active: 0,lastModified: {},etag: {}});
    var nr = [], lf = /\?/, ht = /(=)\?(?=&|$)|\?\?/, vf = i.now();
    i.ajaxSetup({jsonp: "callback",jsonpCallback: function() {
            var n = nr.pop() || i.expando + "_" + vf++;
            return this[n] = !0, n
        }}), i.ajaxPrefilter("json jsonp", function(r, u, f) {
        var e, s, o, h = r.data, c = r.url, l = r.jsonp !== !1, a = l && ht.test(c), v = l && !a && typeof h == "string" && !(r.contentType || "").indexOf("application/x-www-form-urlencoded") && ht.test(h);
        if (r.dataTypes[0] === "jsonp" || a || v)
            return e = r.jsonpCallback = i.isFunction(r.jsonpCallback) ? r.jsonpCallback() : r.jsonpCallback, s = n[e], a ? r.url = c.replace(ht, "$1" + e) : v ? r.data = h.replace(ht, "$1" + e) : l && (r.url += (lf.test(c) ? "&" : "?") + r.jsonp + "=" + e), r.converters["script json"] = function() {
                return o || i.error(e + " was not called"), o[0]
            }, r.dataTypes[0] = "json", n[e] = function() {
                o = arguments
            }, f.always(function() {
                n[e] = s, r[e] && (r.jsonpCallback = u.jsonpCallback, nr.push(e)), o && i.isFunction(s) && s(o[0]), o = s = t
            }), "script"
    }), i.ajaxSetup({accepts: {script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents: {script: /javascript|ecmascript/},converters: {"text script": function(n) {
                return i.globalEval(n), n
            }}}), i.ajaxPrefilter("script", function(n) {
        n.cache === t && (n.cache = !1), n.crossDomain && (n.type = "GET", n.global = !1)
    }), i.ajaxTransport("script", function(n) {
        if (n.crossDomain) {
            var i, u = r.head || r.getElementsByTagName("head")[0] || r.documentElement;
            return {send: function(f, e) {
                    i = r.createElement("script"), i.async = "async", n.scriptCharset && (i.charset = n.scriptCharset), i.src = n.url, i.onload = i.onreadystatechange = function(n, r) {
                        (r || !i.readyState || /loaded|complete/.test(i.readyState)) && (i.onload = i.onreadystatechange = null, u && i.parentNode && u.removeChild(i), i = t, r || e(200, "success"))
                    }, u.insertBefore(i, u.firstChild)
                },abort: function() {
                    i && i.onload(0, 1)
                }}
        }
    }), st = n.ActiveXObject ? function() {
        for (var n in v)
            v[n](0, 1)
    } : !1, ui = 0, i.ajaxSettings.xhr = n.ActiveXObject ? function() {
        return !this.isLocal && yr() || co()
    } : yr, function(n) {
        i.extend(i.support, {ajax: !!n,cors: !!n && "withCredentials" in n})
    }(i.ajaxSettings.xhr()), i.support.ajax && i.ajaxTransport(function(r) {
        if (!r.crossDomain || i.support.cors) {
            var u;
            return {send: function(f, e) {
                    var h, s, o = r.xhr();
                    if (r.username ? o.open(r.type, r.url, r.async, r.username, r.password) : o.open(r.type, r.url, r.async), r.xhrFields)
                        for (s in r.xhrFields)
                            o[s] = r.xhrFields[s];
                    r.mimeType && o.overrideMimeType && o.overrideMimeType(r.mimeType), !r.crossDomain && !f["X-Requested-With"] && (f["X-Requested-With"] = "XMLHttpRequest");
                    try {
                        for (s in f)
                            o.setRequestHeader(s, f[s])
                    } catch (c) {
                    }
                    o.send(r.hasContent && r.data || null), u = function(n, f) {
                        var s, a, y, c, l;
                        try {
                            if (u && (f || o.readyState === 4))
                                if (u = t, h && (o.onreadystatechange = i.noop, st && delete v[h]), f)
                                    o.readyState !== 4 && o.abort();
                                else {
                                    s = o.status, y = o.getAllResponseHeaders(), c = {}, l = o.responseXML, l && l.documentElement && (c.xml = l);
                                    try {
                                        c.text = o.responseText
                                    } catch (n) {
                                    }
                                    try {
                                        a = o.statusText
                                    } catch (p) {
                                        a = ""
                                    }
                                    !s && r.isLocal && !r.crossDomain ? s = c.text ? 200 : 404 : s === 1223 && (s = 204)
                                }
                        } catch (w) {
                            f || e(-1, w)
                        }
                        c && e(s, a, c, y)
                    }, r.async ? o.readyState === 4 ? setTimeout(u, 0) : (h = ++ui, st && (v || (v = {}, i(n).unload(st)), v[h] = u), o.onreadystatechange = u) : u()
                },abort: function() {
                    u && u(0, 1)
                }}
        }
    });
    var ft, nt, df = /^(?:toggle|show|hide)$/, gf = new RegExp("^(?:([-+])=|)(" + it + ")([a-z%]*)$", "i"), ne = /queueHooks$/, tt = [no], b = {"*": [function(n, t) {
                var o, s, h, r = this.createTween(n, t), e = gf.exec(t), c = r.cur(), u = +c || 0, f = 1;
                if (e) {
                    if (o = +e[2], s = e[3] || (i.cssNumber[n] ? "" : "px"), s !== "px" && u) {
                        u = i.css(r.elem, n, !0) || o || 1;
                        do
                            h = f = f || ".5", u = u / f, i.style(r.elem, n, u + s), f = r.cur() / c;
                        while (f !== 1 && f !== h)
                    }
                    r.unit = s, r.start = u, r.end = e[1] ? u + (e[1] + 1) * o : o
                }
                return r
            }]};
    i.Animation = i.extend(lu, {tweener: function(n, t) {
            i.isFunction(n) ? (t = n, n = ["*"]) : n = n.split(" ");
            for (var r, u = 0, f = n.length; u < f; u++)
                r = n[u], b[r] = b[r] || [], b[r].unshift(t)
        },prefilter: function(n, t) {
            t ? tt.unshift(n) : tt.push(n)
        }}), i.Tween = f, f.prototype = {constructor: f,init: function(n, t, r, u, f, e) {
            this.elem = n, this.prop = r, this.easing = f || "swing", this.options = t, this.start = this.now = this.cur(), this.end = u, this.unit = e || (i.cssNumber[r] ? "" : "px")
        },cur: function() {
            var n = f.propHooks[this.prop];
            return n && n.get ? n.get(this) : f.propHooks._default.get(this)
        },run: function(n) {
            var r, t = f.propHooks[this.prop];
            return this.pos = r = i.easing[this.easing](n, this.options.duration * n, 0, 1, this.options.duration), this.now = (this.end - this.start) * r + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), t && t.set ? t.set(this) : f.propHooks._default.set(this), this
        }}, f.prototype.init.prototype = f.prototype, f.propHooks = {_default: {get: function(n) {
                var t;
                return n.elem[n.prop] == null || !!n.elem.style && n.elem.style[n.prop] != null ? (t = i.css(n.elem, n.prop, !1, ""), !t || t === "auto" ? 0 : t) : n.elem[n.prop]
            },set: function(n) {
                i.fx.step[n.prop] ? i.fx.step[n.prop](n) : n.elem.style && (n.elem.style[i.cssProps[n.prop]] != null || i.cssHooks[n.prop]) ? i.style(n.elem, n.prop, n.now + n.unit) : n.elem[n.prop] = n.now
            }}}, f.propHooks.scrollTop = f.propHooks.scrollLeft = {set: function(n) {
            n.elem.nodeType && n.elem.parentNode && (n.elem[n.prop] = n.now)
        }}, i.each(["toggle", "show", "hide"], function(n, t) {
        var r = i.fn[t];
        i.fn[t] = function(u, f, e) {
            return u == null || typeof u == "boolean" || !n && i.isFunction(u) && i.isFunction(f) ? r.apply(this, arguments) : this.animate(ut(t, !0), u, f, e)
        }
    }), i.fn.extend({fadeTo: function(n, t, i, r) {
            return this.filter(lt).css("opacity", 0).show().end().animate({opacity: t}, n, i, r)
        },animate: function(n, t, r, u) {
            var e = i.isEmptyObject(n), f = i.speed(t, r, u), o = function() {
                var t = lu(this, i.extend({}, n), f);
                e && t.stop(!0)
            };
            return e || f.queue === !1 ? this.each(o) : this.queue(f.queue, o)
        },stop: function(n, r, u) {
            var f = function(n) {
                var t = n.stop;
                delete n.stop, t(u)
            };
            return typeof n != "string" && (u = r, r = n, n = t), r && n !== !1 && this.queue(n || "fx", []), this.each(function() {
                var o = !0, t = n != null && n + "queueHooks", e = i.timers, r = i._data(this);
                if (t)
                    r[t] && r[t].stop && f(r[t]);
                else
                    for (t in r)
                        r[t] && r[t].stop && ne.test(t) && f(r[t]);
                for (t = e.length; t--; )
                    e[t].elem === this && (n == null || e[t].queue === n) && (e[t].anim.stop(u), o = !1, e.splice(t, 1));
                (o || !u) && i.dequeue(this, n)
            })
        }}), i.each({slideDown: ut("show"),slideUp: ut("hide"),slideToggle: ut("toggle"),fadeIn: {opacity: "show"},fadeOut: {opacity: "hide"},fadeToggle: {opacity: "toggle"}}, function(n, t) {
        i.fn[n] = function(n, i, r) {
            return this.animate(t, n, i, r)
        }
    }), i.speed = function(n, t, r) {
        var u = n && typeof n == "object" ? i.extend({}, n) : {complete: r || !r && t || i.isFunction(n) && n,duration: n,easing: r && t || t && !i.isFunction(t) && t};
        return u.duration = i.fx.off ? 0 : typeof u.duration == "number" ? u.duration : u.duration in i.fx.speeds ? i.fx.speeds[u.duration] : i.fx.speeds._default, (u.queue == null || u.queue === !0) && (u.queue = "fx"), u.old = u.complete, u.complete = function() {
            i.isFunction(u.old) && u.old.call(this), u.queue && i.dequeue(this, u.queue)
        }, u
    }, i.easing = {linear: function(n) {
            return n
        },swing: function(n) {
            return .5 - Math.cos(n * Math.PI) / 2
        }}, i.timers = [], i.fx = f.prototype.init, i.fx.tick = function() {
        for (var r, n = i.timers, t = 0; t < n.length; t++)
            r = n[t], !r() && n[t] === r && n.splice(t--, 1);
        n.length || i.fx.stop()
    }, i.fx.timer = function(n) {
        n() && i.timers.push(n) && !nt && (nt = setInterval(i.fx.tick, i.fx.interval))
    }, i.fx.interval = 13, i.fx.stop = function() {
        clearInterval(nt), nt = null
    }, i.fx.speeds = {slow: 600,fast: 200,_default: 400}, i.fx.step = {}, i.expr && i.expr.filters && (i.expr.filters.animated = function(n) {
        return i.grep(i.timers, function(t) {
            return n === t.elem
        }).length
    }), vt = /^(?:body|html)$/i, i.fn.offset = function(n) {
        if (arguments.length)
            return n === t ? this : this.each(function(t) {
                i.offset.setOffset(this, n, t)
            });
        var e, r, o, s, h, c, l, a, v, y, u = this[0], f = u && u.ownerDocument;
        if (f)
            return (o = f.body) === u ? i.offset.bodyOffset(u) : (r = f.documentElement, i.contains(r, u) ? (e = u.getBoundingClientRect(), s = lr(f), h = r.clientTop || o.clientTop || 0, c = r.clientLeft || o.clientLeft || 0, l = s.pageYOffset || r.scrollTop, a = s.pageXOffset || r.scrollLeft, v = e.top + l - h, y = e.left + a - c, {top: v,left: y}) : {top: 0,left: 0})
    }, i.offset = {bodyOffset: function(n) {
            var t = n.offsetTop, r = n.offsetLeft;
            return i.support.doesNotIncludeMarginInBodyOffset && (t += parseFloat(i.css(n, "marginTop")) || 0, r += parseFloat(i.css(n, "marginLeft")) || 0), {top: t,left: r}
        },setOffset: function(n, t, r) {
            var f = i.css(n, "position");
            f === "static" && (n.style.position = "relative");
            var e = i(n), o = e.offset(), l = i.css(n, "top"), a = i.css(n, "left"), v = (f === "absolute" || f === "fixed") && i.inArray("auto", [l, a]) > -1, u = {}, s = {}, h, c;
            v ? (s = e.position(), h = s.top, c = s.left) : (h = parseFloat(l) || 0, c = parseFloat(a) || 0), i.isFunction(t) && (t = t.call(n, r, o)), t.top != null && (u.top = t.top - o.top + h), t.left != null && (u.left = t.left - o.left + c), "using" in t ? t.using.call(n, u) : e.css(u)
        }}, i.fn.extend({position: function() {
            if (this[0]) {
                var u = this[0], n = this.offsetParent(), t = this.offset(), r = vt.test(n[0].nodeName) ? {top: 0,left: 0} : n.offset();
                return t.top -= parseFloat(i.css(u, "marginTop")) || 0, t.left -= parseFloat(i.css(u, "marginLeft")) || 0, r.top += parseFloat(i.css(n[0], "borderTopWidth")) || 0, r.left += parseFloat(i.css(n[0], "borderLeftWidth")) || 0, {top: t.top - r.top,left: t.left - r.left}
            }
        },offsetParent: function() {
            return this.map(function() {
                for (var n = this.offsetParent || r.body; n && !vt.test(n.nodeName) && i.css(n, "position") === "static"; )
                    n = n.offsetParent;
                return n || r.body
            })
        }}), i.each({scrollLeft: "pageXOffset",scrollTop: "pageYOffset"}, function(n, r) {
        var u = /Y/.test(r);
        i.fn[n] = function(f) {
            return i.access(this, function(n, f, e) {
                var o = lr(n);
                if (e === t)
                    return o ? r in o ? o[r] : o.document.documentElement[f] : n[f];
                o ? o.scrollTo(u ? i(o).scrollLeft() : e, u ? e : i(o).scrollTop()) : n[f] = e
            }, n, f, arguments.length, null)
        }
    }), i.each({Height: "height",Width: "width"}, function(n, r) {
        i.each({padding: "inner" + n,content: r,"": "outer" + n}, function(u, f) {
            i.fn[f] = function(f, e) {
                var o = arguments.length && (u || typeof f != "boolean"), s = u || (f === !0 || e === !0 ? "margin" : "border");
                return i.access(this, function(r, u, f) {
                    var e;
                    return i.isWindow(r) ? r.document.documentElement["client" + n] : r.nodeType === 9 ? (e = r.documentElement, Math.max(r.body["scroll" + n], e["scroll" + n], r.body["offset" + n], e["offset" + n], e["client" + n])) : f === t ? i.css(r, u, f, s) : i.style(r, u, f, s)
                }, r, o ? f : t, o)
            }
        })
    }), n.jQuery = n.$ = i, typeof define == "function" && define.amd && define.amd.jQuery && define("jquery", [], function() {
        return i
    })
})(window), String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "")
}, String.prototype.trimAll = function() {
    return this.replace(/\s*/g, "")
}, String.prototype.replaceFormat = function(n) {
    var t = /{(\d+)}/gm;
    return this.replace(t, function(t, i) {
        return n[~~i]
    })
}, String.prototype.replaceAll = function(n, t) {
    return this.replace(new RegExp(n, "gm"), t)
}, String.prototype.startWith = function(n) {
    return typeof n != "string" ? !1 : this.indexOf(n) == 0
}, String.prototype.endWith = function(n) {
    if (typeof n != "string")
        return !1;
    var t = this.length - n.length;
    return t >= 0 && this.lastIndexOf(n) === t
}, String.prototype.getLastString = function(n) {
    return this.substr(this.length - n)
}, String.prototype.toArray = function() {
    for (var t = [], n = 0; n < this.length; n++)
        t.push(this[n]);
    return t
}, String.prototype.sortAsc = function() {
    return this.toArray().sort().join("")
}, String.prototype.sortDesc = function() {
    return this.toArray().sort().reverse().join("")
}, String.prototype.maxShow = function(n) {
    return this.length > n ? this.substr(0, n) + "..." : this
}, Number.prototype.toFixedNum = function(n) {
    return parseFloat(this.toFixed(n))
}, Array.prototype.each = function(n) {
    for (var t = 0; t < this.length; t++)
        if (n(this[t], t) == !1)
            break;
    return this
}, Array.prototype.where = function(n) {
    var t = [];
    return this.each(function(i, r) {
        n(i, r) == !0 && t.push(i)
    }), t
}, Array.prototype.first = function() {
    return this.length == 0 ? null : this[0]
}, Array.prototype.last = function() {
    return this.length == 0 ? null : this[this.length - 1]
}, Array.prototype.take = function(n) {
    for (var i = [], t = 0; t < n; t++)
        i.push(this[t]);
    return i
}, Array.prototype.skip = function(n) {
    for (var i = [], t = n; t < this.length; t++)
        i.push(this[t]);
    return i
}, Array.prototype.dive = function(n) {
    for (var i = [], t = 0; t < this.length; t++)
        n.indexOf(this[t]) == -1 && i.push(this[t]);
    return i
}, Array.prototype.distinct = function() {
    for (var r = {}, u = [], f = this.length, t, i, n = 0; n < f; n++)
        t = this[n], i = typeof t + t, r[i] === undefined && (u.push(t), r[i] = 1);
    return u
}, Array.prototype.select = function(n) {
    var t = [];
    return this.each(function(i, r) {
        n(i, r) && t.push(i)
    }), t
}, Array.prototype.remove = function(n) {
    var i = [], t;
    return this.each(function(t, r) {
        n(t, r) && i.push(r)
    }), t = this, i.reverse().each(function(n) {
        t.splice(n, 1)
    }), t
}, Array.prototype.removeElement = function(n) {
    return this.remove(function(t) {
        return t == n
    })
}, Array.prototype.removeAt = function() {
    return this.remove(function(n, t) {
        return t == t
    })
}, Array.prototype.indexOf = function(n) {
    var t = -1;
    return this.each(function(i, r) {
        if (i == n)
            return t = r, !1
    }), t
}, Array.prototype.contain = function(n) {
    return this.indexOf(n) >= 0
}, DateFormatStr = {dateTime1: "YYYY-MM-DD hh:mm:ss",dateTime2: "YYYY/MM/DD hh:mm:ss",longDate: "YYYY/MM/DD",shortDate: "YY/M/D",longTime: "hh:mm:ss",shortTime: "h:m:s",isoDate: "YYYY-MM-DD",isoTime: "hh:mm:ss",isoDateTime: "YYYY-MM-DD'T'hh:mm:ss",isoUtcDateTime: "UTC:YYYY-MM-DD'T'hh:mm:ss'Z'"}, Date.prototype.Format = function(n) {
    var t = n, i = ["日", "一", "二", "三", "四", "五", "六"];
    return t = t.replace(/yyyy|YYYY/, this.getFullYear()), t = t.replace(/yy|YY/, this.getYear() % 100 > 9 ? (this.getYear() % 100).toString() : "0" + this.getYear() % 100), t = t.replace(/MM/, this.getMonth() > 8 ? (this.getMonth() + 1).toString() : "0" + (this.getMonth() + 1).toString()), t = t.replace(/M/g, this.getMonth() + 1), t = t.replace(/w|W/g, i[this.getDay()]), t = t.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : "0" + this.getDate()), t = t.replace(/d|D/g, this.getDate()), t = t.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString() : "0" + this.getHours()), t = t.replace(/h|H/g, this.getHours()), t = t.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : "0" + this.getMinutes()), t = t.replace(/m/g, this.getMinutes()), t = t.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : "0" + this.getSeconds()), t = t.replace(/s|S/g, this.getSeconds())
}, Date.prototype.DateAdd = function(n, t) {
    var i = this;
    switch (n) {
        case "sec":
            return new Date(Date.parse(i) + 1e3 * t);
        case "min":
            return new Date(Date.parse(i) + 6e4 * t);
        case "hour":
            return new Date(Date.parse(i) + 36e5 * t);
        case "day":
            return new Date(Date.parse(i) + 864e5 * t);
        case "week":
            return new Date(Date.parse(i) + 6048e5 * t);
        case "qua":
            return new Date(i.getFullYear(), i.getMonth() + t * 3, i.getDate(), i.getHours(), i.getMinutes(), i.getSeconds());
        case "month":
            return new Date(i.getFullYear(), i.getMonth() + t, i.getDate(), i.getHours(), i.getMinutes(), i.getSeconds());
        case "year":
            return new Date(i.getFullYear() + t, i.getMonth(), i.getDate(), i.getHours(), i.getMinutes(), i.getSeconds())
    }
    return undefined
}, hash = {"qq.com": "http://mail.qq.com","gmail.com": "http://mail.google.com","sina.com": "http://mail.sina.com.cn","163.com": "http://mail.163.com","126.com": "http://mail.126.com","yeah.net": "http://www.yeah.net/","sohu.com": "http://mail.sohu.com/","tom.com": "http://mail.tom.com/","sogou.com": "http://mail.sogou.com/","139.com": "http://mail.10086.cn/","hotmail.com": "http://www.hotmail.com","live.com": "http://login.live.com/","live.cn": "http://login.live.cn/","live.com.cn": "http://login.live.com.cn","189.com": "http://webmail16.189.cn/webmail/","yahoo.com.cn": "http://mail.cn.yahoo.com/","yahoo.cn": "http://mail.cn.yahoo.com/","eyou.com": "http://www.eyou.com/","21cn.com": "http://mail.21cn.com/","188.com": "http://www.188.com/","foxmail.coom": "http://www.foxmail.com","vip.163.com": "http://vip.163.com","outlook.com": "http://login.live.com"}, ctx = {isDebug: getIsDebug(),ajaxTimeout: 6e5,httpsEnabled: !1,userId: "",pageSize: 20,enterEvent: undefined,receiveSocketLottery: undefined,receiveSocketAward: undefined,bettingNoMediaSound: 0,pcHallRoundBegining: 0,ajaxCount: 0}, $("input").bind("keypress", function(n) {
    var t = t || window.event;
    t.keyCode == 13 && ctx.enterEvent && ctx.enterEvent(n)
}), ctx.isAndroid = function() {
    var n = navigator.userAgent;
    return n.indexOf("Android") >= 0 ? !0 : !1
}, ctx.androidVersion = function() {
    var n = navigator.userAgent;
    return parseFloat(n.slice(n.indexOf("Android") + 8))
}, ctx.androidLow = function() {
    return ctx.isAndroid() && ctx.androidVersion() < 3
}, ctx.isIpad = function() {
    return navigator.userAgent.match(/iPad/i) != null
}, ctx.isIE = function() {
    return $.browser.msie
}, ctx.ajax = function(n) {
    return n = $.extend({timeout: ctx.ajaxTimeout,beforeSend: function() {
            ctx.ajaxCount += 1
        },complete: function() {
            ctx.ajaxCount -= 1
        },error: function(t) {
            ctx.isDebug ? alert("请示Url：" + n.url + "......\n" + t.responseText) : t.responseText && t.responseText == "ajax_login" ? location.href = "/" : t.responseText && t.responseText == "IsMaintain" && (location.href = "/Maintain")
        }}, n), $.ajax(n)
}, ctx.postToken = function(n, t, i, r, u) {
    var f;
    return f = $("input[name=formhash]").length == 1 ? $.extend(t, {formhash: $("input[name=formhash]").val()}) : t, ctx.ajax({url: n,data: f,type: "post",dataType: "json",headers: u,success: i,error: r})
}, ctx.postTokenEx = function(n) {
    var i = {type: "post",dataType: "json"}, t;
    return $("input[name=formhash]").length >= 1 ? (t = n.data || n.Data, t = t ? $.extend(t, {formhash: $("input[name=formhash]").val()}) : {formhash: $("input[name=formhash]").val()}, i = $.extend(i, n, {data: t})) : i = $.extend(i, n), ctx.ajax(i)
}, ctx.postJSON = function(n, t, i, r, u) {
    return ctx.ajax({url: n,data: t,type: "post",dataType: "json",headers: u,success: i,error: r})
}, ctx.getJSON = function(n, t, i, r) {
    return ctx.ajax({url: n,type: "get",dataType: "json",headers: r,success: t,error: i})
}, ctx.getHtml = function(n, t, i, r) {
    return ctx.ajax({url: n,type: "get",dataType: "html",headers: r,success: t,error: i})
}, $.iMobile = {browserInfo: function() {
        return navigator.userAgent
    },isMobile: function() {
        return !!$.iMobile.browserInfo().match(/Mobile|Android|U/)
    },isIPhone: function() {
        return !!$.iMobile.browserInfo().match(/iPhone OS/)
    },isBelowIPhone5: function() {
        return !!$.iMobile.browserInfo().match(/iPhone OS/) && window.screen.height == 480
    },isIPhone5: function() {
        return !!$.iMobile.browserInfo().match(/iPhone OS/) && window.screen.height == 568
    },isWinPhone: function() {
        return !!$.iMobile.browserInfo().match(/Windows Phone OS/)
    }}, jQuery.fn.extend({everyTime: function(n, t, i, r) {
        return this.each(function() {
            jQuery.timer.add(this, n, t, i, r)
        })
    },oneTime: function(n, t, i) {
        return this.each(function() {
            jQuery.timer.add(this, n, t, i, 1)
        })
    },stopTime: function(n, t) {
        return this.each(function() {
            jQuery.timer.remove(this, n, t)
        })
    }}), jQuery.extend({timer: {global: [],guid: 1,dataKey: "jQuery.timer",regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,powers: {ms: 1,cs: 10,ds: 100,s: 1e3,das: 1e4,hs: 1e5,ks: 1e6},timeParse: function(n) {
            var t, i, r;
            return n == undefined || n == null ? null : (t = this.regex.exec(jQuery.trim(n.toString())), t[2] ? (i = parseFloat(t[1]), r = this.powers[t[2]] || 1, i * r) : n)
        },add: function(n, t, i, r, u) {
            var o = 0, f, e;
            (jQuery.isFunction(i) && (u || (u = r), r = i, i = t), t = jQuery.timer.timeParse(t), typeof t != "number" || isNaN(t) || t < 0) || ((typeof u != "number" || isNaN(u) || u < 0) && (u = 0), u = u || 0, f = jQuery.data(n, this.dataKey) || jQuery.data(n, this.dataKey, {}), f[i] || (f[i] = {}), r.timerID = r.timerID || this.guid++, e = function() {
                (++o > u && u !== 0 || r.call(n, o) === !1) && jQuery.timer.remove(n, i, r)
            }, e.timerID = r.timerID, f[i][r.timerID] || (f[i][r.timerID] = window.setInterval(e, t)), this.global.push(n))
        },remove: function(n, t, i) {
            var r = jQuery.data(n, this.dataKey), u, i;
            if (r) {
                if (t) {
                    if (r[t]) {
                        if (i)
                            i.timerID && (window.clearInterval(r[t][i.timerID]), delete r[t][i.timerID]);
                        else
                            for (i in r[t])
                                window.clearInterval(r[t][i]), delete r[t][i];
                        for (u in r[t])
                            break;
                        u || (u = null, delete r[t])
                    }
                } else
                    for (t in r)
                        this.remove(n, t, i);
                for (u in r)
                    break;
                u || jQuery.removeData(n, this.dataKey)
            }
        }}}), jQuery(window).bind("unload", function() {
    jQuery.each(jQuery.timer.global, function(n, t) {
        jQuery.timer.remove(t)
    })
}), function() {
    var d = this, pt = d._, c = {}, r = Array.prototype, ft = Object.prototype, at = Function.prototype, a = r.push, t = r.slice, l = r.concat, f = ft.toString, wt = ft.hasOwnProperty, nt = r.forEach, st = r.map, ot = r.reduce, g = r.reduceRight, ut = r.filter, rt = r.every, tt = r.some, e = r.indexOf, et = r.lastIndexOf, lt = Array.isArray, yt = Object.keys, k = at.bind, n = function(t) {
        return t instanceof n ? t : this instanceof n ? (this._wrapped = t, void 0) : new n(t)
    }, i, b, w, s, p, y, o, u, ht, it, h;
    "undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = n), exports._ = n) : d._ = n, n.VERSION = "1.4.4", i = n.each = n.forEach = function(t, i, r) {
        var u, e, f;
        if (null != t)
            if (nt && t.forEach === nt)
                t.forEach(i, r);
            else if (t.length === +t.length) {
                for (u = 0, e = t.length; e > u; u++)
                    if (i.call(r, t[u], u, t) === c)
                        return
            } else
                for (f in t)
                    if (n.has(t, f) && i.call(r, t[f], f, t) === c)
                        return
    }, n.map = n.collect = function(n, t, r) {
        var u = [];
        return null == n ? u : st && n.map === st ? n.map(t, r) : (i(n, function(n, i, f) {
            u[u.length] = t.call(r, n, i, f)
        }), u)
    }, b = "Reduce of empty array with no initial value", n.reduce = n.foldl = n.inject = function(t, r, u, f) {
        var e = arguments.length > 2;
        if (null == t && (t = []), ot && t.reduce === ot)
            return f && (r = n.bind(r, f)), e ? t.reduce(r, u) : t.reduce(r);
        if (i(t, function(n, t, i) {
            e ? u = r.call(f, u, n, t, i) : (u = n, e = !0)
        }), !e)
            throw new TypeError(b);
        return u
    }, n.reduceRight = n.foldr = function(t, r, u, f) {
        var o = arguments.length > 2, e, s;
        if (null == t && (t = []), g && t.reduceRight === g)
            return f && (r = n.bind(r, f)), o ? t.reduceRight(r, u) : t.reduceRight(r);
        if (e = t.length, e !== +e && (s = n.keys(t), e = s.length), i(t, function(n, i, h) {
            i = s ? s[--e] : --e, o ? u = r.call(f, u, t[i], i, h) : (u = t[i], o = !0)
        }), !o)
            throw new TypeError(b);
        return u
    }, n.find = n.detect = function(n, t, i) {
        var r;
        return w(n, function(n, u, f) {
            if (t.call(i, n, u, f))
                return r = n, !0
        }), r
    }, n.filter = n.select = function(n, t, r) {
        var u = [];
        return null == n ? u : ut && n.filter === ut ? n.filter(t, r) : (i(n, function(n, i, f) {
            t.call(r, n, i, f) && (u[u.length] = n)
        }), u)
    }, n.reject = function(t, i, r) {
        return n.filter(t, function(n, t, u) {
            return !i.call(r, n, t, u)
        }, r)
    }, n.every = n.all = function(t, r, u) {
        r || (r = n.identity);
        var f = !0;
        return null == t ? f : rt && t.every === rt ? t.every(r, u) : (i(t, function(n, t, i) {
            if (!(f = f && r.call(u, n, t, i)))
                return c
        }), !!f)
    }, w = n.some = n.any = function(t, r, u) {
        r || (r = n.identity);
        var f = !1;
        return null == t ? f : tt && t.some === tt ? t.some(r, u) : (i(t, function(n, t, i) {
            if (f || (f = r.call(u, n, t, i)))
                return c
        }), !!f)
    }, n.contains = n.include = function(n, t) {
        return null == n ? !1 : e && n.indexOf === e ? n.indexOf(t) != -1 : w(n, function(n) {
            return n === t
        })
    }, n.invoke = function(i, r) {
        var u = t.call(arguments, 2), f = n.isFunction(r);
        return n.map(i, function(n) {
            return (f ? r : n[r]).apply(n, u)
        })
    }, n.pluck = function(t, i) {
        return n.map(t, function(n) {
            return n[i]
        })
    }, n.where = function(t, i, r) {
        return n.isEmpty(i) ? r ? null : [] : n[r ? "find" : "filter"](t, function(n) {
            for (var t in i)
                if (i[t] !== n[t])
                    return !1;
            return !0
        })
    }, n.findWhere = function(t, i) {
        return n.where(t, i, !0)
    }, n.max = function(t, r, u) {
        if (!r && n.isArray(t) && t[0] === +t[0] && 65535 > t.length)
            return Math.max.apply(Math, t);
        if (!r && n.isEmpty(t))
            return -1 / 0;
        var f = {computed: -1 / 0,value: -1 / 0};
        return i(t, function(n, t, i) {
            var e = r ? r.call(u, n, t, i) : n;
            e >= f.computed && (f = {value: n,computed: e})
        }), f.value
    }, n.min = function(t, r, u) {
        if (!r && n.isArray(t) && t[0] === +t[0] && 65535 > t.length)
            return Math.min.apply(Math, t);
        if (!r && n.isEmpty(t))
            return 1 / 0;
        var f = {computed: 1 / 0,value: 1 / 0};
        return i(t, function(n, t, i) {
            var e = r ? r.call(u, n, t, i) : n;
            f.computed > e && (f = {value: n,computed: e})
        }), f.value
    }, n.shuffle = function(t) {
        var u, f = 0, r = [];
        return i(t, function(t) {
            u = n.random(f++), r[f - 1] = r[u], r[u] = t
        }), r
    }, s = function(t) {
        return n.isFunction(t) ? t : function(n) {
            return n[t]
        }
    }, n.sortBy = function(t, i, r) {
        var u = s(i);
        return n.pluck(n.map(t, function(n, t, i) {
            return {value: n,index: t,criteria: u.call(r, n, t, i)}
        }).sort(function(n, t) {
            var i = n.criteria, r = t.criteria;
            if (i !== r) {
                if (i > r || i === void 0)
                    return 1;
                if (r > i || r === void 0)
                    return -1
            }
            return n.index < t.index ? -1 : 1
        }), "value")
    }, p = function(t, r, u, f) {
        var e = {}, o = s(r || n.identity);
        return i(t, function(n, i) {
            var r = o.call(u, n, i, t);
            f(e, r, n)
        }), e
    }, n.groupBy = function(t, i, r) {
        return p(t, i, r, function(t, i, r) {
            (n.has(t, i) ? t[i] : t[i] = []).push(r)
        })
    }, n.countBy = function(t, i, r) {
        return p(t, i, r, function(t, i) {
            n.has(t, i) || (t[i] = 0), t[i]++
        })
    }, n.sortedIndex = function(t, i, r, u) {
        var e;
        r = null == r ? n.identity : s(r);
        for (var h = r.call(u, i), f = 0, o = t.length; o > f; )
            e = f + o >>> 1, h > r.call(u, t[e]) ? f = e + 1 : o = e;
        return f
    }, n.toArray = function(i) {
        return i ? n.isArray(i) ? t.call(i) : i.length === +i.length ? n.map(i, n.identity) : n.values(i) : []
    }, n.size = function(t) {
        return null == t ? 0 : t.length === +t.length ? t.length : n.keys(t).length
    }, n.first = n.head = n.take = function(n, i, r) {
        if (null != n)
            return null == i || r ? n[0] : t.call(n, 0, i)
    }, n.initial = function(n, i, r) {
        return t.call(n, 0, n.length - (null == i || r ? 1 : i))
    }, n.last = function(n, i, r) {
        if (null != n)
            return null == i || r ? n[n.length - 1] : t.call(n, Math.max(n.length - i, 0))
    }, n.rest = n.tail = n.drop = function(n, i, r) {
        return t.call(n, null == i || r ? 1 : i)
    }, n.compact = function(t) {
        return n.filter(t, n.identity)
    }, y = function(t, r, u) {
        return i(t, function(t) {
            n.isArray(t) ? r ? a.apply(u, t) : y(t, r, u) : u.push(t)
        }), u
    }, n.flatten = function(n, t) {
        return y(n, t, [])
    }, n.without = function(i) {
        return n.difference(i, t.call(arguments, 1))
    }, n.uniq = n.unique = function(t, r, u, f) {
        n.isFunction(r) && (f = u, u = r, r = !1);
        var s = u ? n.map(t, u, f) : t, o = [], e = [];
        return i(s, function(i, u) {
            (r ? u && e[e.length - 1] === i : n.contains(e, i)) || (e.push(i), o.push(t[u]))
        }), o
    }, n.union = function() {
        return n.uniq(l.apply(r, arguments))
    }, n.intersection = function(i) {
        var r = t.call(arguments, 1);
        return n.filter(n.uniq(i), function(t) {
            return n.every(r, function(i) {
                return n.indexOf(i, t) >= 0
            })
        })
    }, n.difference = function(i) {
        var u = l.apply(r, t.call(arguments, 1));
        return n.filter(i, function(t) {
            return !n.contains(u, t)
        })
    }, n.zip = function() {
        for (var r = t.call(arguments), u = n.max(n.pluck(r, "length")), f = Array(u), i = 0; u > i; i++)
            f[i] = n.pluck(r, "" + i);
        return f
    }, n.object = function(n, t) {
        if (null == n)
            return {};
        for (var r = {}, i = 0, u = n.length; u > i; i++)
            t ? r[n[i]] = t[i] : r[n[i][0]] = n[i][1];
        return r
    }, n.indexOf = function(t, i, r) {
        if (null == t)
            return -1;
        var u = 0, f = t.length;
        if (r) {
            if ("number" != typeof r)
                return u = n.sortedIndex(t, i), t[u] === i ? u : -1;
            u = 0 > r ? Math.max(0, f + r) : r
        }
        if (e && t.indexOf === e)
            return t.indexOf(i, r);
        for (; f > u; u++)
            if (t[u] === i)
                return u;
        return -1
    }, n.lastIndexOf = function(n, t, i) {
        var u, r;
        if (null == n)
            return -1;
        if (u = null != i, et && n.lastIndexOf === et)
            return u ? n.lastIndexOf(t, i) : n.lastIndexOf(t);
        for (r = u ? i : n.length; r--; )
            if (n[r] === t)
                return r;
        return -1
    }, n.range = function(n, t, i) {
        1 >= arguments.length && (t = n || 0, n = 0), i = arguments[2] || 1;
        for (var r = Math.max(Math.ceil((t - n) / i), 0), u = 0, f = Array(r); r > u; )
            f[u++] = n, n += i;
        return f
    }, n.bind = function(n, i) {
        if (n.bind === k && k)
            return k.apply(n, t.call(arguments, 1));
        var r = t.call(arguments, 2);
        return function() {
            return n.apply(i, r.concat(t.call(arguments)))
        }
    }, n.partial = function(n) {
        var i = t.call(arguments, 1);
        return function() {
            return n.apply(this, i.concat(t.call(arguments)))
        }
    }, n.bindAll = function(r) {
        var u = t.call(arguments, 1);
        return 0 === u.length && (u = n.functions(r)), i(u, function(t) {
            r[t] = n.bind(r[t], r)
        }), r
    }, n.memoize = function(t, i) {
        var r = {};
        return i || (i = n.identity), function() {
            var u = i.apply(this, arguments);
            return n.has(r, u) ? r[u] : r[u] = t.apply(this, arguments)
        }
    }, n.delay = function(n, i) {
        var r = t.call(arguments, 2);
        return setTimeout(function() {
            return n.apply(null, r)
        }, i)
    }, n.defer = function(i) {
        return n.delay.apply(n, [i, 1].concat(t.call(arguments, 1)))
    }, n.throttle = function(n, t) {
        var r, u, i, f, e = 0, o = function() {
            e = new Date, i = null, f = n.apply(r, u)
        };
        return function() {
            var s = new Date, h = t - (s - e);
            return r = this, u = arguments, 0 >= h ? (clearTimeout(i), i = null, e = s, f = n.apply(r, u)) : i || (i = setTimeout(o, h)), f
        }
    }, n.debounce = function(n, t, i) {
        var r, u;
        return function() {
            var f = this, e = arguments, o = function() {
                r = null, i || (u = n.apply(f, e))
            }, s = i && !r;
            return clearTimeout(r), r = setTimeout(o, t), s && (u = n.apply(f, e)), u
        }
    }, n.once = function(n) {
        var t, i = !1;
        return function() {
            return i ? t : (i = !0, t = n.apply(this, arguments), n = null, t)
        }
    }, n.wrap = function(n, t) {
        return function() {
            var i = [n];
            return a.apply(i, arguments), t.apply(this, i)
        }
    }, n.compose = function() {
        var n = arguments;
        return function() {
            for (var t = arguments, i = n.length - 1; i >= 0; i--)
                t = [n[i].apply(this, t)];
            return t[0]
        }
    }, n.after = function(n, t) {
        return 0 >= n ? t() : function() {
            if (1 > --n)
                return t.apply(this, arguments)
        }
    }, n.keys = yt || function(t) {
        var i, r;
        if (t !== Object(t))
            throw new TypeError("Invalid object");
        i = [];
        for (r in t)
            n.has(t, r) && (i[i.length] = r);
        return i
    }, n.values = function(t) {
        var r = [], i;
        for (i in t)
            n.has(t, i) && r.push(t[i]);
        return r
    }, n.pairs = function(t) {
        var r = [], i;
        for (i in t)
            n.has(t, i) && r.push([i, t[i]]);
        return r
    }, n.invert = function(t) {
        var r = {}, i;
        for (i in t)
            n.has(t, i) && (r[t[i]] = i);
        return r
    }, n.functions = n.methods = function(t) {
        var r = [], i;
        for (i in t)
            n.isFunction(t[i]) && r.push(i);
        return r.sort()
    }, n.extend = function(n) {
        return i(t.call(arguments, 1), function(t) {
            if (t)
                for (var i in t)
                    n[i] = t[i]
        }), n
    }, n.pick = function(n) {
        var u = {}, f = l.apply(r, t.call(arguments, 1));
        return i(f, function(t) {
            t in n && (u[t] = n[t])
        }), u
    }, n.omit = function(i) {
        var f = {}, e = l.apply(r, t.call(arguments, 1)), u;
        for (u in i)
            n.contains(e, u) || (f[u] = i[u]);
        return f
    }, n.defaults = function(n) {
        return i(t.call(arguments, 1), function(t) {
            if (t)
                for (var i in t)
                    null == n[i] && (n[i] = t[i])
        }), n
    }, n.clone = function(t) {
        return n.isObject(t) ? n.isArray(t) ? t.slice() : n.extend({}, t) : t
    }, n.tap = function(n, t) {
        return t(n), n
    }, o = function(t, i, r, u) {
        var a, v, e, s, c, l, h;
        if (t === i)
            return 0 !== t || 1 / t == 1 / i;
        if (null == t || null == i)
            return t === i;
        if (t instanceof n && (t = t._wrapped), i instanceof n && (i = i._wrapped), a = f.call(t), a != f.call(i))
            return !1;
        switch (a) {
            case "[object String]":
                return t == i + "";
            case "[object Number]":
                return t != +t ? i != +i : 0 == t ? 1 / t == 1 / i : t == +i;
            case "[object Date]":
            case "[object Boolean]":
                return +t == +i;
            case "[object RegExp]":
                return t.source == i.source && t.global == i.global && t.multiline == i.multiline && t.ignoreCase == i.ignoreCase
        }
        if ("object" != typeof t || "object" != typeof i)
            return !1;
        for (v = r.length; v--; )
            if (r[v] == t)
                return u[v] == i;
        if (r.push(t), u.push(i), e = 0, s = !0, "[object Array]" == a) {
            if (e = t.length, s = e == i.length)
                for (; e-- && (s = o(t[e], i[e], r, u)); )
                    ;
        } else {
            if (c = t.constructor, l = i.constructor, c !== l && !(n.isFunction(c) && c instanceof c && n.isFunction(l) && l instanceof l))
                return !1;
            for (h in t)
                if (n.has(t, h) && (e++, !(s = n.has(i, h) && o(t[h], i[h], r, u))))
                    break;
            if (s) {
                for (h in i)
                    if (n.has(i, h) && !e--)
                        break;
                s = !e
            }
        }
        return r.pop(), u.pop(), s
    }, n.isEqual = function(n, t) {
        return o(n, t, [], [])
    }, n.isEmpty = function(t) {
        if (null == t)
            return !0;
        if (n.isArray(t) || n.isString(t))
            return 0 === t.length;
        for (var i in t)
            if (n.has(t, i))
                return !1;
        return !0
    }, n.isElement = function(n) {
        return !(!n || 1 !== n.nodeType)
    }, n.isArray = lt || function(n) {
        return "[object Array]" == f.call(n)
    }, n.isObject = function(n) {
        return n === Object(n)
    }, i(["Arguments", "Function", "String", "Number", "Date", "RegExp"], function(t) {
        n["is" + t] = function(n) {
            return f.call(n) == "[object " + t + "]"
        }
    }), n.isArguments(arguments) || (n.isArguments = function(t) {
        return !(!t || !n.has(t, "callee"))
    }), "function" != typeof /./ && (n.isFunction = function(n) {
        return "function" == typeof n
    }), n.isFinite = function(n) {
        return isFinite(n) && !isNaN(parseFloat(n))
    }, n.isNaN = function(t) {
        return n.isNumber(t) && t != +t
    }, n.isBoolean = function(n) {
        return n === !0 || n === !1 || "[object Boolean]" == f.call(n)
    }, n.isNull = function(n) {
        return null === n
    }, n.isUndefined = function(n) {
        return n === void 0
    }, n.has = function(n, t) {
        return wt.call(n, t)
    }, n.noConflict = function() {
        return d._ = pt, this
    }, n.identity = function(n) {
        return n
    }, n.times = function(n, t, i) {
        for (var u = Array(n), r = 0; n > r; r++)
            u[r] = t.call(i, r);
        return u
    }, n.random = function(n, t) {
        return null == t && (t = n, n = 0), n + Math.floor(Math.random() * (t - n + 1))
    }, u = {escape: {"&": "&amp;","<": "&lt;",">": "&gt;",'"': "&quot;","'": "&#x27;","/": "&#x2F;"}}, u.unescape = n.invert(u.escape), ht = {escape: RegExp("[" + n.keys(u.escape).join("") + "]", "g"),unescape: RegExp("(" + n.keys(u.unescape).join("|") + ")", "g")}, n.each(["escape", "unescape"], function(t) {
        n[t] = function(n) {
            return null == n ? "" : ("" + n).replace(ht[t], function(n) {
                return u[t][n]
            })
        }
    }), n.result = function(t, i) {
        if (null == t)
            return null;
        var r = t[i];
        return n.isFunction(r) ? r.call(t) : r
    }, n.mixin = function(t) {
        i(n.functions(t), function(i) {
            var r = n[i] = t[i];
            n.prototype[i] = function() {
                var t = [this._wrapped];
                return a.apply(t, arguments), h.call(this, r.apply(n, t))
            }
        })
    }, it = 0, n.uniqueId = function(n) {
        var t = ++it + "";
        return n ? n + t : t
    }, n.templateSettings = {evaluate: /<%([\s\S]+?)%>/g,interpolate: /<%=([\s\S]+?)%>/g,escape: /<%-([\s\S]+?)%>/g};
    var v = /(.)^/, ct = {"'": "'","\\": "\\","\r": "r","\n": "n","\t": "t","\u2028": "u2028","\u2029": "u2029"}, vt = /\\|'|\r|\n|\t|\u2028|\u2029/g;
    n.template = function(t, i, r) {
        var f, e;
        r = n.defaults({}, r, n.templateSettings);
        var s = RegExp([(r.escape || v).source, (r.interpolate || v).source, (r.evaluate || v).source].join("|") + "|$", "g"), o = 0, u = "__p+='";
        t.replace(s, function(n, i, r, f, e) {
            return u += t.slice(o, e).replace(vt, function(n) {
                return "\\" + ct[n]
            }), i && (u += "'+\n((__t=(" + i + "))==null?'':_.escape(__t))+\n'"), r && (u += "'+\n((__t=(" + r + "))==null?'':__t)+\n'"), f && (u += "';\n" + f + "\n__p+='"), o = e + n.length, n
        }), u += "';\n", r.variable || (u = "with(obj||{}){\n" + u + "}\n"), u = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + u + "return __p;\n";
        try {
            f = Function(r.variable || "obj", "_", u)
        } catch (h) {
            throw h.source = u, h;
        }
        return i ? f(i, n) : (e = function(t) {
            return f.call(this, t, n)
        }, e.source = "function(" + (r.variable || "obj") + "){\n" + u + "}", e)
    }, n.chain = function(t) {
        return n(t).chain()
    }, h = function(t) {
        return this._chain ? n(t).chain() : t
    }, n.mixin(n), i(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function(t) {
        var i = r[t];
        n.prototype[t] = function() {
            var n = this._wrapped;
            return i.apply(n, arguments), "shift" != t && "splice" != t || 0 !== n.length || delete n[0], h.call(this, n)
        }
    }), i(["concat", "join", "slice"], function(t) {
        var i = r[t];
        n.prototype[t] = function() {
            return h.call(this, i.apply(this._wrapped, arguments))
        }
    }), n.extend(n.prototype, {chain: function() {
            return this._chain = !0, this
        },value: function() {
            return this._wrapped
        }})
}.call(this), function(n) {
    function h(n) {
        return typeof n == "string"
    }
    function e(n) {
        var t = st.call(arguments, 1);
        return function() {
            return n.apply(this, t.concat(st.call(arguments)))
        }
    }
    function at(n) {
        return n.replace(l, "$2")
    }
    function vt(n) {
        return n.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/, "$1")
    }
    function d(t, u, e, s, c) {
        var b, y, p, k, d;
        return s !== i ? (p = e.match(t ? l : /^([^#?]*)\??([^#]*)(#?.*)/), d = p[3] || "", c === 2 && h(s) ? y = s.replace(t ? a : ht, "") : (k = r(p[2]), s = h(s) ? r[t ? f : o](s) : s, y = c === 2 ? s : c === 1 ? n.extend({}, s, k) : n.extend({}, k, s), y = tt(y), t && (y = y.replace(nt, v))), b = p[1] + (t ? w : y || !p[1] ? "?" : "") + y + d) : b = u(e !== i ? e : location.href), b
    }
    function it(n, t, u) {
        return t === i || typeof t == "boolean" ? (u = t, t = s[n ? f : o]()) : t = h(t) ? t.replace(n ? a : ht, "") : t, r(t, u)
    }
    function ct(t, r, u, f) {
        return h(u) || typeof u == "object" || (f = u, u = r, r = i), this.each(function() {
            var e = n(this), i = r || ft()[(this.nodeName || "").toLowerCase()] || "", o = i && e.attr(i) || "";
            e.attr(i, s[t](o, u, f))
        })
    }
    var i, st = Array.prototype.slice, v = decodeURIComponent, s = n.param, tt, u, r, y, p = n.bbq = n.bbq || {}, ot, et, ft, ut = n.event.special, rt = "hashchange", o = "querystring", f = "fragment", b = "elemUrlAttr", k = "href", c = "src", ht = /^.*\?|#.*$/g, a, l, nt, g, w, lt = {};
    s[o] = e(d, 0, vt), s[f] = u = e(d, 1, at), s.sorted = tt = function(t, i) {
        var u = [], r = {};
        return n.each(s(t, i).split("&"), function(n, t) {
            var i = t.replace(/(?:%5B|=).*$/, ""), f = r[i];
            f || (f = r[i] = [], u.push(i)), f.push(t)
        }), n.map(u.sort(), function(n) {
            return r[n]
        }).join("&")
    }, u.noEscape = function(t) {
        t = t || "";
        var i = n.map(t.split(""), encodeURIComponent);
        nt = new RegExp(i.join("|"), "g")
    }, u.noEscape(",/"), u.ajaxCrawlable = function(n) {
        return n !== i && (n ? (a = /^.*(?:#!|#)/, l = /^([^#]*)(?:#!|#)?(.*)$/, w = "#!") : (a = /^.*#/, l = /^([^#]*)#?(.*)$/, w = "#"), g = !!n), g
    }, u.ajaxCrawlable(0), n.deparam = r = function(t, r) {
        var u = {}, f = {"true": !0,"false": !1,"null": null};
        return n.each(t.replace(/\+/g, " ").split("&"), function(t, e) {
            var y = e.split("="), h = v(y[0]), o, a = u, l = 0, s = h.split("]["), c = s.length - 1;
            if (/\[/.test(s[0]) && /\]$/.test(s[c]) ? (s[c] = s[c].replace(/\]$/, ""), s = s.shift().split("[").concat(s), c = s.length - 1) : c = 0, y.length === 2)
                if (o = v(y[1]), r && (o = o && !isNaN(o) ? +o : o === "undefined" ? i : f[o] !== i ? f[o] : o), c)
                    for (; l <= c; l++)
                        h = s[l] === "" ? a.length : s[l], a = a[h] = l < c ? a[h] || (s[l + 1] && isNaN(s[l + 1]) ? {} : []) : o;
                else
                    n.isArray(u[h]) ? u[h].push(o) : u[h] = u[h] !== i ? [u[h], o] : o;
            else
                h && (u[h] = r ? i : "")
        }), u
    }, r[o] = e(it, 0), r[f] = y = e(it, 1), n[b] || (n[b] = function(t) {
        return n.extend(lt, t)
    })({a: k,base: k,iframe: c,img: c,input: c,form: "action",link: k,script: c}), ft = n[b], n.fn[o] = e(ct, o), n.fn[f] = e(ct, f), p.pushState = ot = function(n, t) {
        h(n) && /^#/.test(n) && t === i && (t = 2);
        var r = n !== i, f = u(location.href, r ? n : {}, r ? t : 2);
        location.href = f
    }, p.getState = et = function(n, t) {
        return n === i || typeof n == "boolean" ? y(n) : y(t)[n]
    }, p.removeState = function(t) {
        var r = {};
        t !== i && (r = et(), n.each(n.isArray(t) ? t : arguments, function(n, t) {
            delete r[t]
        })), ot(r, 2)
    }, ut[rt] = n.extend(ut[rt], {add: function(t) {
            function o(n) {
                var t = n[f] = u();
                n.getState = function(n, u) {
                    return n === i || typeof n == "boolean" ? r(t, n) : r(t, u)[n]
                }, e.apply(this, arguments)
            }
            var e;
            if (n.isFunction(t))
                return e = t, o;
            e = t.handler, t.handler = o
        }})
}(jQuery, this), function(n, t, i) {
    function u(n) {
        return n = n || location.href, "#" + n.replace(/^[^#]*#?(.*)$/, "$1")
    }
    var r = "hashchange", f = document, e, s = n.event.special, h = f.documentMode, o = "on" + r in t && (h === i || h > 7);
    n.fn[r] = function(n) {
        return n ? this.bind(r, n) : this.trigger(r)
    }, n.fn[r].delay = 50, s[r] = n.extend(s[r], {setup: function() {
            if (o)
                return !1;
            n(e.start)
        },teardown: function() {
            if (o)
                return !1;
            n(e.stop)
        }}), e = function() {
        function a() {
            var f = u(), i = v(h);
            f !== h ? (l(h = f, i), n(t).trigger(r)) : i !== h && (location.href = location.href.replace(/#.*/, "") + i), s = setTimeout(a, n.fn[r].delay)
        }
        var e = {}, s, h = u(), c = function(n) {
            return n
        }, l = c, v = c;
        return e.start = function() {
            s || a()
        }, e.stop = function() {
            s && clearTimeout(s), s = i
        }, n.browser.msie && !o && function() {
            var t, i;
            e.start = function() {
                t || (i = n.fn[r].src, i = i && i + u(), t = n('<iframe tabindex="-1" title="empty"/>').hide().one("load", function() {
                    i || l(u()), a()
                }).attr("src", i || "javascript:0").insertAfter("body")[0].contentWindow, f.onpropertychange = function() {
                    try {
                        event.propertyName === "title" && (t.document.title = f.title)
                    } catch (n) {
                    }
                })
            }, e.stop = c, v = function() {
                return u(t.location.href)
            }, l = function(i, u) {
                var e = t.document, o = n.fn[r].domain;
                i !== u && (e.title = f.title, e.open(), o && e.write('<script>document.domain="' + o + '"<\/script>'), e.close(), t.location.hash = i)
            }
        }(), e
    }()
}(jQuery, this), function(n) {
    n.fn.zclip = function(t) {
        if (typeof t != "object" || t.length) {
            if (typeof t == "string")
                return this.each(function() {
                    var r = n(this), u, i;
                    t = t.toLowerCase(), u = r.data("zclipId"), i = n("#" + u + ".zclip"), t == "remove" ? (i.remove(), r.removeClass("active hover")) : t == "hide" ? (i.hide(), r.removeClass("active hover")) : t == "show" && i.show()
                })
        } else {
            var i = n.extend({path: "ZeroClipboard.swf",copy: null,beforeCopy: null,afterCopy: null,clickAfter: !0,setHandCursor: !0,setCSSEffects: !0}, t);
            return this.each(function() {
                var t = n(this), r;
                t.is(":visible") && (typeof i.copy == "string" || n.isFunction(i.copy)) && (ZeroClipboard.setMoviePath(i.path), r = new ZeroClipboard.Client, n.isFunction(i.copy) && t.bind("zClip_copy", i.copy), n.isFunction(i.beforeCopy) && t.bind("zClip_beforeCopy", i.beforeCopy), n.isFunction(i.afterCopy) && t.bind("zClip_afterCopy", i.afterCopy), r.setHandCursor(i.setHandCursor), r.setCSSEffects(i.setCSSEffects), r.addEventListener("mouseOver", function() {
                    t.trigger("mouseenter")
                }), r.addEventListener("mouseOut", function() {
                    t.trigger("mouseleave")
                }), r.addEventListener("mouseDown", function() {
                    t.trigger("mousedown"), n.isFunction(i.copy) ? r.setText(t.triggerHandler("zClip_copy")) : r.setText(i.copy), n.isFunction(i.beforeCopy) && t.trigger("zClip_beforeCopy")
                }), r.addEventListener("complete", function(r, u) {
                    n.isFunction(i.afterCopy) ? t.trigger("zClip_afterCopy") : (u.length > 500 && (u = u.substr(0, 500) + "...\n\n(" + (u.length - 500) + " characters not shown)"), t.removeClass("hover"), alert("Copied text to clipboard:\n\n " + u)), i.clickAfter && t.trigger("click")
                }), r.glue(t[0], t.parent()[0]), n(window).bind("load resize", function() {
                    r.reposition()
                }))
            })
        }
    }
}(jQuery), ZeroClipboard = {version: "1.0.7",clients: {},moviePath: "ZeroClipboard.swf",nextId: 1,$: function(n) {
        return typeof n == "string" && (n = document.getElementById(n)), n.addClass || (n.hide = function() {
            this.style.display = "none"
        }, n.show = function() {
            this.style.display = ""
        }, n.addClass = function(n) {
            this.removeClass(n), this.className += " " + n
        }, n.removeClass = function(n) {
            for (var i = this.className.split(/\s+/), r = -1, t = 0; t < i.length; t++)
                i[t] == n && (r = t, t = i.length);
            return r > -1 && (i.splice(r, 1), this.className = i.join(" ")), this
        }, n.hasClass = function(n) {
            return !!this.className.match(new RegExp("\\s*" + n + "\\s*"))
        }), n
    },setMoviePath: function(n) {
        this.moviePath = n
    },dispatch: function(n, t, i) {
        var r = this.clients[n];
        r && r.receiveEvent(t, i)
    },register: function(n, t) {
        this.clients[n] = t
    },getDOMObjectPosition: function(n, t) {
        var i = {left: 0,top: 0,width: n.width ? n.width : n.offsetWidth,height: n.height ? n.height : n.offsetHeight};
        return n && n != t && (i.left += n.offsetLeft, i.top += n.offsetTop), i
    },Client: function(n) {
        this.handlers = {}, this.id = ZeroClipboard.nextId++, this.movieId = "ZeroClipboardMovie_" + this.id, ZeroClipboard.register(this.id, this), n && this.glue(n)
    }}, ZeroClipboard.Client.prototype = {id: 0,ready: !1,movie: null,clipText: "",handCursorEnabled: !0,cssEffects: !0,handlers: null,glue: function(n, t, i) {
        var f, u, r;
        if (this.domElement = ZeroClipboard.$(n), f = 99, this.domElement.style.zIndex && (f = parseInt(this.domElement.style.zIndex, 10) + 1), typeof t == "string" ? t = ZeroClipboard.$(t) : typeof t == "undefined" && (t = document.getElementsByTagName("body")[0]), u = ZeroClipboard.getDOMObjectPosition(this.domElement, t), this.div = document.createElement("div"), this.div.className = "zclip", this.div.id = "zclip-" + this.movieId, $(this.domElement).data("zclipId", "zclip-" + this.movieId), r = this.div.style, r.position = "absolute", r.left = "" + u.left + "px", r.top = "" + u.top + "px", r.width = "" + u.width + "px", r.height = "" + u.height + "px", r.zIndex = f, typeof i == "object")
            for (addedStyle in i)
                r[addedStyle] = i[addedStyle];
        t.appendChild(this.div), this.div.innerHTML = this.getHTML(u.width, u.height)
    },getHTML: function(n, t) {
        var i = "", r = "id=" + this.id + "&width=" + n + "&height=" + t, u;
        return navigator.userAgent.match(/MSIE/) ? (u = location.href.match(/^https/i) ? "https://" : "http://", i += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="' + u + 'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="' + n + '" height="' + t + '" id="' + this.movieId + '" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="' + ZeroClipboard.moviePath + '" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="' + r + '"/><param name="wmode" value="transparent"/></object>') : i += '<embed id="' + this.movieId + '" src="' + ZeroClipboard.moviePath + '" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="' + n + '" height="' + t + '" name="' + this.movieId + '" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="' + r + '" wmode="transparent" />', i
    },hide: function() {
        this.div && (this.div.style.left = "-2000px")
    },show: function() {
        this.reposition()
    },destroy: function() {
        if (this.domElement && this.div) {
            this.hide(), this.div.innerHTML = "";
            var n = document.getElementsByTagName("body")[0];
            try {
                n.removeChild(this.div)
            } catch (t) {
            }
            this.domElement = null, this.div = null
        }
    },reposition: function(n) {
        if (n && (this.domElement = ZeroClipboard.$(n), this.domElement || this.hide()), this.domElement && this.div) {
            var t = ZeroClipboard.getDOMObjectPosition(this.domElement), i = this.div.style;
            i.left = "" + t.left + "px", i.top = "" + t.top + "px"
        }
    },setText: function(n) {
        this.clipText = n, this.ready && this.movie.setText(n)
    },addEventListener: function(n, t) {
        n = n.toString().toLowerCase().replace(/^on/, ""), this.handlers[n] || (this.handlers[n] = []), this.handlers[n].push(t)
    },setHandCursor: function(n) {
        this.handCursorEnabled = n, this.ready && this.movie.setHandCursor(n)
    },setCSSEffects: function(n) {
        this.cssEffects = !!n
    },receiveEvent: function(n, t) {
        var r, u, f, i;
        n = n.toString().toLowerCase().replace(/^on/, "");
        switch (n) {
            case "load":
                if (this.movie = document.getElementById(this.movieId), !this.movie) {
                    r = this, setTimeout(function() {
                        r.receiveEvent("load", null)
                    }, 1);
                    return
                }
                if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
                    r = this, setTimeout(function() {
                        r.receiveEvent("load", null)
                    }, 100), this.ready = !0;
                    return
                }
                this.ready = !0;
                try {
                    this.movie.setText(this.clipText)
                } catch (e) {
                }
                try {
                    this.movie.setHandCursor(this.handCursorEnabled)
                } catch (e) {
                }
                break;
            case "mouseover":
                this.domElement && this.cssEffects && (this.domElement.addClass("hover"), this.recoverActive && this.domElement.addClass("active"));
                break;
            case "mouseout":
                this.domElement && this.cssEffects && (this.recoverActive = !1, this.domElement.hasClass("active") && (this.domElement.removeClass("active"), this.recoverActive = !0), this.domElement.removeClass("hover"));
                break;
            case "mousedown":
                this.domElement && this.cssEffects && this.domElement.addClass("active");
                break;
            case "mouseup":
                this.domElement && this.cssEffects && (this.domElement.removeClass("active"), this.recoverActive = !1)
        }
        if (this.handlers[n])
            for (u = 0, f = this.handlers[n].length; u < f; u++)
                i = this.handlers[n][u], typeof i == "function" ? i(this, t) : typeof i == "object" && i.length == 2 ? i[0][i[1]](this, t) : typeof i == "string" && window[i](this, t)
    }}, function(n) {
    typeof define == "function" && define.amd ? define(["jquery"], n) : n(jQuery)
}(function(n) {
    function u(n) {
        return n
    }
    function f(n) {
        return decodeURIComponent(n.replace(r, " "))
    }
    function i(n) {
        n.indexOf('"') === 0 && (n = n.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\"));
        try {
            return t.json ? JSON.parse(n) : n
        } catch (i) {
        }
    }
    var r = /\+/g, t = n.cookie = function(r, e, o) {
        var l, h, s, y;
        if (e !== undefined)
            return o = n.extend({}, t.defaults, o), typeof o.expires == "number" && (l = o.expires, h = o.expires = new Date, h.setDate(h.getDate() + l)), e = t.json ? JSON.stringify(e) : String(e), document.cookie = [t.raw ? r : encodeURIComponent(r), "=", t.raw ? e : encodeURIComponent(e), o.expires ? "; expires=" + o.expires.toUTCString() : "", o.path ? "; path=" + o.path : "", o.domain ? "; domain=" + o.domain : "", o.secure ? "; secure" : ""].join("");
        var a = t.raw ? u : f, v = document.cookie.split("; "), c = r ? undefined : {};
        for (s = 0, y = v.length; s < y; s++) {
            var p = v[s].split("="), w = a(p.shift()), b = a(p.join("="));
            if (r && r === w) {
                c = i(b);
                break
            }
            r || (c[w] = i(b))
        }
        return c
    };
    t.defaults = {}, n.removeCookie = function(t, i) {
        return n.cookie(t) !== undefined ? (n.cookie(t, "", n.extend({}, i, {expires: -1})), !0) : !1
    }
}), $.bodyMsg = function(n) {
    function r() {
        var o = 20, t = $(window).width(), i = $(window).height(), r = $("#body_message").width(), u = $("#body_message").height(), f = (t - r) / 2, e = (i - u) / 2;
        $("#body_message").css({left: f,top: e})
    }
    var i = {msg: "",megPos: 1,timerOut: -1}, t = $.extend({}, i, n);
    $("#body_message").remove(), $("body").append('<div id="body_message"  style= "position:absolute;" z-index:99999><span>' + t.msg + "</span></div>"), r(t.megPos), t.timerOut == -1 && (t.timerOut = GetReadInfoMinSeconds(t.msg)), setTimeout(function() {
        $("#body_message").fadeOut(function() {
            $("#body_message").remove()
        })
    }, t.timerOut)
}, _alert = window.alert, window.alert = function(n) {
    $.bodyMsg({msg: n,timerOut: GetReadInfoMinSeconds(n, 7e3)})
}, function(n) {
    n.checkBrowser = {browserAgent: function() {
            return navigator.userAgent
        }}, n.isSupport = function(n) {
        return typeof n != "undefined" ? !0 : !1
    }, n.fn.ulCenter = function(t) {
        var r = {thisWidth: 0,averageSize: !0}, i = n.extend({}, r, t);
        return this.each(function() {
            function u() {
                var n = i.thisWidth !== 0 ? i.thisWidth : t.outerWidth(), u = r.outerWidth() * r.length;
                t.css({"margin-left": (n - u) / 2 + "px"})
            }
            var f = n(this), t = f.find("ul:first"), r = t.find("li");
            u(), n(window).resize(function() {
                u()
            })
        })
    }, n.fn.notice = function(t) {
        var r = {heightSet: 30,speed: 600,timer: 5e3,noticeList: ".notice_list:first",prevBtn: "#no_prev",nextBtn: "#no_next"}, i = n.extend({}, r, t);
        return this.each(function() {
            function s() {
                t = t >= u - 1 ? 0 : t + 1, o(t)
            }
            function o(n) {
                f.find("ul:first").stop(!0, !1).animate({marginTop: "-" + i.heightSet * n + "px"})
            }
            var r = n(this), f = r.find(i.noticeList), h = r.find(i.prevBtn), c = r.find(i.nextBtn), u = f.find("ul:first li").length, t = 0, e = null;
            typeof i.heightSet != "number" || i.heightSet <= 0 || typeof i.speed == "number" && typeof i.timer == "number" && (f.find("ul:first").css({height: i.heightSet * u + "px"}), e = setInterval(s, i.timer), r.bind({mouseover: function() {
                    clearInterval(e)
                },mouseout: function() {
                    e = setInterval(s, i.timer)
                }}), h.bind({click: function() {
                    t = t <= 0 ? u - 1 : t - 1, o(t)
                }}), c.bind({click: function() {
                    t = t >= u - 1 ? 0 : t + 1, o(t)
                }}))
        })
    }, n.fn.inputTextHide = function(t) {
        return this.each(function() {
            var i = n(this), r = i.val();
            i.val(t), i.bind({focus: function() {
                    r = i.val(), r == t && i.val("")
                },blur: function() {
                    r = i.val(), (r == "" || r == t) && i.val(t)
                }})
        })
    }, n.fn.columnSet = function(t) {
        var r = {subItem: ".column_item",rows: 2,margin: 10}, i = n.extend({}, r, t);
        return this.each(function() {
            function f(n, t, i, r) {
                var u = t / i - r / 2, f = e % i;
                n.css({float: "left",width: u + "px"}).eq(f).css({float: "right"})
            }
            var r = n(this), u = r.find(i.subItem), e = u.length, t;
            n(this).append('<div class="clear" style="clear:both; height:0px; font-size:0px; line-height:0px; overflow:hidden;"></div>'), t = r.outerWidth(), f(u, t, i.rows, i.margin), n(window).resize(function() {
                t = r.outerWidth(), f(u, t, i.rows, i.margin)
            })
        })
    }, n.dialogContentSet = {showDialogCont: function(t, i, r, u, f, e) {
            n(t).length > 0 ? (n(".dialog:visible").hide(), n(t).show(), this.dialogPos(t), n("#dialog_mask").show(), typeof f == "function" && f(), this.closeFunc(t, u, e)) : alert("指定的栏目不存在。")
        },cureateDialogCont: function(t, i, r, u, f, e, o) {
            var h = "", c;
            h = t !== "" ? t : this.makeName(), n("#" + h).remove(), c = "", c += '<div class="dialog" id="' + h + '" style="width:' + o + 'px;"><div class="dialog_main">', c += '<div class="dialog_header"><h4>' + i + '</h4><div class="dialog_close"><span>关闭</span></div></div>', c += '<div class="dialog_body">' + r + "</div>", c += "</div></div>", n(".dialog:visible").hide(), n("body").append(c), n("#" + h).show(), n("#dialog_mask").show(), this.dialogPos("#" + h), typeof f == "function" && f(), this.closeFunc("#" + h, u, e)
        },makeName: function() {
            var n = "", r = 6, t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz", u = t.length;
            for (i = 0; i < r; i++)
                n += t.charAt(Math.floor(Math.random() * u));
            return n
        },closeFunc: function(t, i, r) {
            n(t).find(".dialog_close:first").on({click: function() {
                    switch (i) {
                        case 0:
                            n.dialogContentSet.hideDialogCont(t, r);
                            break;
                        case 1:
                            n.dialogContentSet.removeDialogCont(t, r);
                            break;
                        default:
                            n.dialogContentSet.hideDialogCont(t, r)
                    }
                    return !1
                }})
        },hideDialogCont: function(t, i) {
            var r = null;
            n(t).addClass("dialog_out"), r = setTimeout(function() {
                n(t).hide().removeClass("dialog_out"), typeof i == "function" && i()
            }, 500), n("#dialog_mask").hide()
        },removeDialogCont: function(t) {
            var i = null;
            n(t).addClass("dialog_out"), i = setTimeout(function() {
                n(t).removeClass("dialog_out").remove(), typeof hideFunc == "function" && hideFunc()
            }, 500), n("#dialog_mask").hide()
        },dialogPos: function(t) {
            n(t).css({left: (n(window).width() - n(t).outerWidth()) / 2 + "px",top: (n(window).height() - n(t).outerHeight()) / 2 + "px"}), n(window).resize(function() {
                n(t).css({left: (n(window).width() - n(t).outerWidth()) / 2 + "px",top: (n(window).height() - n(t).outerHeight()) / 2 + "px"})
            })
        }}, n.dialogCont = function(t) {
        var r = {model: 0,contName: "",title: "弹出栏目",bodyInner: "",hideModel: 0,widthSet: 600,heightSet: 0,callFunc: "",hideFunc: ""}, i = n.extend({}, r, t);
        switch (i.model) {
            case 0:
                n.dialogContentSet.showDialogCont(i.contName, i.title, i.bodyInner, i.hideModel, i.callFunc, i.hideFunc);
                break;
            case 1:
                n.dialogContentSet.cureateDialogCont(i.contName, i.title, i.bodyInner, i.hideModel, i.callFunc, i.hideFunc, i.widthSet, i.heightSet);
                break;
            default:
                n.dialogContentSet.showDialogCont(i.contName, i.title, i.bodyInner, i.hideModel, i.callFunc, i.hideFunc)
        }
        typeof i.callFunc == Function && i.callFunc()
    }, n.dialogConfirm = function(t) {
        var u = {sIconPatch: "/images/dialog_confirm_icon/",sTitle: "操作提示",sBody: "",nWidthSet: 300,sIconName: "m_default",callFunc: "",hideFunc: ""}, i = n.extend({}, u, t), r = "";
        r += '<div class="dialog_confirm">', r += '<div class="dialog_confirm_body"><div class="dcb_icon"><img src="' + i.sIconPatch + i.sIconName + '.png" alt="" /></div><div class="dcb_title"><h4>' + i.sTitle + '</h4></div><div class="dcb_body"><p>' + i.sBody + "</p></div></div>", r += '<div class="dialog_confirm_option"><div class="base_button" id="dc_confirm_btn"><button>确认</button></div></div>', r += "</div>", n.dialogContentSet.cureateDialogCont("dialog_confirm", i.sTitle, r, 1, i.fCallFunc, i.fHideFunc, i.nWidthSet, "auto");
        n("#dc_confirm_btn").on({click: function() {
                n.dialogContentSet.removeDialogCont("#dialog_confirm")
            }})
    }, n.fn.iTab = function(t) {
        var r = {tabInt: 0,tabNav: ".tab_nav",tabContent: ".tab_content",tabContentItem: ".tab_content_item",func: function() {
            }}, i = n.extend({}, r, t);
        return this.each(function() {
            function f(n) {
                u.find("ul:first li").removeClass("current").eq(n).addClass("current"), o.hide().eq(n).show(), typeof i.func == "function" && i.func(n)
            }
            var r = n(this), u = r.find(i.tabNav), e = r.find(i.tabContent), o = e.find(i.tabContentItem), t = i.tabInt;
            f(t), u.find("ul:first li").each(function() {
                n(this).on({click: function() {
                        return t = n(this).index(), f(t), !1
                    }})
            })
        })
    }, n.iSelectFunc = {createIselect: function(t, r) {
            var s = t.find("label:first"), f = t.find("select:first"), o = s.outerWidth(), e, l;
            o = o <= 0 ? 40 : o + 10, e = f.outerWidth(), e = e <= 0 ? 120 : e + 10;
            var v = e + o, p = f.find("optgroup").length, y = f.find("option").length, a = f.find("option:selected").index(), w = 0;
            if (f.length <= 0 || t.find(".i_select_item").length > 0)
                return !1;
            var u = "", h = "", c = "";
            for (i = 0; i < y; i++)
                l = f.find("option").eq(i).text(), h += i == a ? '<li class="selected">' + l + "</li>" : "<li>" + l + "</li>";
            c = f.find("option").eq(a).text(), s.length > 0 ? (u += '<div class="i_select_item" style="width:' + v + 'px">', u += '<div class="left i_select_title" style="width:' + o + 'px">' + s.text() + "</div>", u += '<div class="right i_select_input" style="width:' + e + 'px">', u += '<div class="i_select_handle"><span>' + c + "</span><em></em></div>", u += '<div class="i_select_option"><ol>' + h + "</ol></div>", u += "</div>", u += '<div class="clear"></div>', u += "</div>") : (u += '<div class="i_select_item" style="width:' + e + 'px">', u += '<div class="i_select_input" style="width:' + e + 'px">', u += '<div class="i_select_handle"><span>' + c + "</span><em></em></div>", u += '<div class="i_select_option"><ol>' + h + "</ol></div>", u += "</div>", u += "</div>"), t.append(u), s.hide(), f.hide(), n.iSelectFunc.iSelectOption(t, f, r)
        },iSelectOption: function(t, i, r) {
            var e = t.find(".i_select_handle:first"), u = t.find(".i_select_option:first"), o = u.find("ol:first li"), s = "", f = 0;
            e.on("click", function() {
                n(".i_select_option").hide(), u.is(":visible") ? u.hide() : (u.show(), u.outerHeight() > 200 && u.css({height: "200px",overflow: "auto"}))
            });
            o.each(function() {
                n(this).on({mouseover: function() {
                        n(this).addClass("hover")
                    },mouseout: function() {
                        n(this).removeClass("hover")
                    },click: function() {
                        s = n(this).text(), f = n(this).index(), o.removeClass("selected").eq(f).addClass("selected"), i.find("option").attr("selected", !1).eq(f).attr("selected", !0), e.find("span:first").text(s);
                        var t = i.find("option").eq(f).val();
                        u.hide(), r(t)
                    }})
            }), n(document).bind("click", function(t) {
                var i = n(t.target);
                i.closest(".i_select_item").length == 0 && n(".i_select_option:visible").hide()
            })
        }}, n.fn.iSelect = function(t) {
        var i = {iSelectFunction: function() {
                return
            }}, r = n.extend({}, i, t);
        return this.each(function() {
            var t = n(this);
            n.iSelectFunc.createIselect(t, r.iSelectFunction)
        })
    }, n.fn.mediaAudio = function(t) {
        var r = {isBetting: !1,fileName: "",hidePanle: !0,loopInt: 0,autoCancel: !0,backFunc: ""}, i = n.extend({}, r, t);
        return this.each(function() {
            var t = n("#buzzer").get(0);
            if (t.volume = 1, n(t).find("source").eq(0).attr("src", "/images/media/" + i.fileName + ".ogg"), n(t).find("source").eq(1).attr("src", "/images/media/" + i.fileName + ".mp3"), t.load(), i.loopInt !== "" && i.loopInt !== 0) {
                var h = 0, f = null, r = i.fileName, o = r.indexOf("_") + 1, s = r.length, e = r.substring(o, s), c = e * i.loopInt, u = 0;
                f = setInterval(function() {
                    var n = i.isBetting && ctx.bettingNoMediaSound == 1;
                    n || (t.play(), t.currentTime = 0), u = u + 1, u >= i.loopInt && (clearInterval(f), typeof i.backFunc == "function" && i.backFunc())
                }, e)
            } else
                t.play(), n(t).bind("ended", function() {
                    t.currentTime = 0, t.pause(), typeof i.backFunc == "function" && i.backFunc()
                })
        })
    }, n.systemMessageFunc = {modelBase: function() {
            var t = n("#system_msg"), r = n("#system_msg_locker"), u = n("#system_msg_locker em:first"), i = t.find(".sm_header:first"), f = i.find(".sm_statc:first span:first"), e = i.find(".sm_statc:first span:last"), o = i.find(".sm_title:first ul:first"), s = t.find(".sm_body:first"), h = n("#sm_read"), c = t.find(".sm_option"), l = n("#sm_prev"), a = n("#sm_next");
            return [t, r, u, i, f, e, o, s, h, c, l, a]
        },newMessage: function() {
            setTimeout(function() {
                n.systemMessageFunc.showMessage()
            }, 1800), n("#buzzer").mediaAudio({fileName: "message_1800"})
        },loadMessage: function(n) {
            var t = this.modelBase(), i = t[0].outerHeight(), r = t[1].outerWidth();
            switch (n) {
                case 0:
                    t[0].hide().css({bottom: "-" + i + "px"}), t[1].show().css({left: "0px"});
                    break;
                case 1:
                    t[0].hide().css({bottom: "20px"}), t[1].show().css({left: "-" + r + "px"});
                    break;
                default:
                    t[0].hide().css({bottom: "-" + i + "px"}), t[1].show().css({left: "0px"})
            }
            this.messageControls()
        },messageControls: function() {
            var t = this.modelBase();
            n.systemMessageFunc.closeMessage(), n.systemMessageFunc.scanMessage(), n.systemMessageFunc.messageSideStatc(t)
        },messageSideStatc: function(t) {
            t[1].bind({click: function() {
                    n.systemMessageFunc.showMessage(), n.cookie("msg_statc", 1)
                }})
        },messageSet: function() {
            var n = this.modelBase(), t = n[0].outerHeight(), i = n[1].outerWidth();
            n[0].css({bottom: "-" + t + "px"}).hide(), n[1].css({left: "-" + i + "px"}).hide()
        },showMessage: function() {
            var t = this.modelBase(), i = t[0].outerHeight(), r = t[1].outerWidth();
            t[1].stop(!0, !0).fadeOut().dequeue().animate({left: "-" + i + "px"}, function() {
                t[0].stop(!0, !0).fadeIn().dequeue().animate({bottom: "20px"}), n.cookie("msg_statc", 1)
            }), this.messageControls()
        },hideMessage: function() {
            var t = this.modelBase(), i = t[0].outerHeight();
            t[0].stop(!0, !1).fadeOut().dequeue().animate({bottom: "-" + i + "px"}, function() {
                t[1].stop(!0, !1).animate({left: "0px"}).dequeue().fadeIn(), n.cookie("msg_statc", 0)
            })
        },closeMessage: function() {
            var t = this.modelBase();
            t[3].find(".close:first").unbind().bind({click: function() {
                    n.systemMessageFunc.hideMessage(t)
                }})
        },removeMessage: function() {
            var n = this.modelBase(), t = n[0].outerHeight(), i = n[1].outerWidth();
            n[0].stop(!0, !1).fadeOut().dequeue().animate({bottom: "-" + t + "px"}, function() {
                n[1].stop(!0, !1).hide().css({left: "-" + i + "px"})
            }), n[2].text("0"), n[4].text("0"), n[5].text("0")
        },flipMessage: function(n) {
            var t = this.modelBase();
            t[4].text(n), t[6].find("li").hide().eq(n - 1).show(), t[7].find(".sm_item").hide().eq(n - 1).show()
        },scanMessage: function() {
            var t = this.modelBase(), i = parseInt(t[4].text()), r = n.localStorage.getItem("sysMsgKeyIndex" + n("#UserId").val()).split(",").length;
            t[10].unbind(), t[11].unbind(), r <= 1 ? t[10].hide() : t[10].show(), i >= r && t[11].hide(), t[10].bind({click: function() {
                    i <= 2 ? (i = 1, n(this).hide()) : i = i - 1, t[11].show(), n.systemMessageFunc.flipMessage(i)
                }}), t[11].bind({click: function() {
                    i >= r - 1 && n(this).hide(), i = i + 1, t[10].show(), n.systemMessageFunc.flipMessage(i)
                }})
        }}, n.localStorage = {getLength: function() {
            return window.localStorage.length
        },setItem: function(n, t) {
            window.localStorage.setItem(n, t)
        },getItem: function(n) {
            return window.localStorage.getItem(n)
        },deleteItem: function(n) {
            window.localStorage.removeItem(n)
        },clear: function() {
            window.localStorage.clear()
        }}, n.strCode = {toEsCape: function(n) {
            return n = n.toString(), escape(n)
        },unEsCape: function(n) {
            return unescape(n)
        },charCode: function(n) {
            var i, t;
            for (n = n.toString(), i = "", t = 0; t < n.length; t++)
                i += t >= n.length - 1 ? n.charCodeAt(t) : n.charCodeAt(t) + ",";
            return i
        },unCharCode: function(n) {
            var i = "", t;
            for (n = n.split(","), t = 0; t < n.length; t++)
                i += String.fromCharCode(n[t]);
            return i
        }}, String.prototype.IsPassStrong = function() {
        return this.length <= 6 ? !1 : this.match(/^\d+$/) ? !1 : this.match(/^[A-Za-z]+$/) ? !1 : !0
    }, n.fn.passStrength = function(t) {
        return this.each(function() {
            function r(n) {
                f.removeClass(), u.find("ul:first li:lt(" + (n + 1) + ")").addClass(s[n]), f.eq(n).addClass("current")
            }
            var e = n(this), u = n(t), f = u.find(".ps_step ul li"), o = 0, s = ["ps_model_a", "ps_model_b", "ps_model_c"], i = "";
            r(o), e.bind({keyup: function() {
                    i = n(this).val(), i.length <= 6 ? r(0) : i.match(/^\d+$/) ? r(0) : i.match(/^[A-Za-z]+$/) ? r(0) : i.match(/^\w+$/) ? r(1) : i.match(/^\W+$/) ? r(1) : i.match(/^\w+\W+[\w\W]*\w+$/) && r(2)
                }})
        })
    }, n.copyToClipboard = function(t) {
        var r = {sText: "",sSuccessTips: "复制到剪贴板成功！",sFailTips: "复制到剪贴板失败，请手动使用Ctrl+C复制！",sErrorTips: "您的浏览器安全设置不建议执行剪贴板操作，请手动使用Ctrl+C复制"}, i = n.extend({}, r, t);
        if (i.sText !== "")
            window.clipboardData ? (window.clipboardData.setData("Text", i.sText), alert(i.sSuccessTips)) : window.prompt ? window.prompt(i.sErrorTips, i.sText) : alert(i.sFailTips);
        else
            return !1
    }, n.fixTips = function(t) {
        function h(t, i, e, o, s, h, v) {
            var w = "", p = "", b, k;
            if (p = t !== "" ? t : a(), b = 0, k = 0, b = o !== 0 ? o - 20 : "auto", k = s !== 0 ? s - 20 : "auto", w += '<div class="fix_tips" id="' + p + '" style="width:' + b + "; height:" + k + ";left:" + h + "px; top:" + v + 'px;" title="提示消息">', w += "<span>" + i + "</span>", e && (w += "<em>关闭</em>"), w += "</div>", n("body").append(w), e)
                l(n("#" + p));
            else
                switch (u) {
                    case 0:
                        f(n("#" + p));
                        break;
                    case 1:
                        c(n("#" + p), r.nTimer);
                        break;
                    default:
                        f(n("#" + p))
                }
            typeof r.fCallFunc == "function" && r.fCallFunc()
        }
        function f(n) {
            n.remove(), typeof r.fHideFunc == "function" && r.fHideFunc()
        }
        function e(n) {
            n.stop(!0, !1).fadeOut(function() {
                n.remove(), typeof r.fHideFunc == "function" && r.fHideFunc()
            })
        }
        function c(n, t) {
            setTimeout(function() {
                e(n)
            }, t)
        }
        function l(n) {
            n.find("em:first").on({click: function() {
                    e(n)
                }})
        }
        function a() {
            var n = "", r = 6, t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz", u = t.length;
            for (i = 0; i < r; i++)
                n += t.charAt(Math.floor(Math.random() * u));
            return n
        }
        var o = {sTipsName: "",sTipsText: "",nLeftSet: 0,nTopSet: 0,nWidthSet: 0,nHeightSet: 0,nTimer: 3e3,bAutoHide: !1,iArrowPos: 0,bCanClose: !1,fCallFunc: "",fHideFunc: ""}, r = n.extend({}, o, t), u, s;
        if (r.sTipsText !== "")
            u = null, u = r.bAutoHide ? 0 : 1, s = h(r.sTipsName, r.sTipsText, r.bCanClose, r.nWidthSet, r.nHeightSet, r.nLeftSet, r.nTopSet, r.iArrowPos);
        else
            return !1
    }, n.fn.formMesg = function(t, i) {
        return this.each(function() {
            var r = n(this), u = "";
            switch (t) {
                case 0:
                    u = '<div class="form_msg fm_error"><span>' + i + "</span></div>";
                    break;
                case 1:
                    u = '<div class="form_msg fm_ok"><span>' + i + "</span></div>";
                    break;
                default:
                    return !1
            }
            r.find(".form_msg") && r.find(".form_msg").remove(), r.append(u), n(".form_msg").show(), n(document).bind({keydown: function() {
                    r.find(".form_msg").remove()
                }})
        })
    }, n.stringOption = {isNumberString: function(n) {
            return /^\d+$/.test(n)
        },isURL: function(n) {
            return /^http:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/.test(n)
        },isEnglish: function(n) {
            return /^[A-Za-z]+$/.test(n)
        },isMail: function(n) {
            return /^(?:[\w-]+\.?)*[\w-]+@(?:[\w-]+\.)+[\w]{2,3}$/.test(n)
        },isTel: function(n) {
            return /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/.test(n)
        },isMobile: function(n) {
            return /^1[358]\d{9}$/.test(n)
        },isZipCode: function(n) {
            return /^(\d){6}$/.test(n)
        },isIDCard: function(n) {
            var r = function(n) {
                var t = n.substring(0, 6) + "19" + n.substring(6, 15), u = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"], f = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2], r = 0;
                for (i = 0; i < t.length; i++)
                    r += t.substring(i, i + 1) * f[i];
                return r %= 11, t += u[r]
            }, t = function(n) {
                var e = {11: "北京",12: "天津",13: "河北",14: "山西",15: "内蒙古",21: "辽宁",22: "吉林",23: "黑龙江",31: "上海",32: "江苏",33: "浙江",34: "安徽",35: "福建",36: "江西",37: "山东",41: "河南",42: "湖北",43: "湖南",44: "广东",45: "广西",46: "海南",50: "重庆",51: "四川",52: "贵州",53: "云南",54: "西藏",61: "陕西",62: "甘肃",63: "青海",64: "宁夏",65: "新疆",71: "台湾",81: "香港",82: "澳门",91: "国外"}, f = 0, o = "", t = n, u, r, i;
                if (!/^\d{17}(\d|x)$/i.test(t) || (t = t.replace(/x$/i, "a"), e[parseInt(t.substr(0, 2))] == null) || (u = t.substr(6, 4) + "-" + Number(t.substr(10, 2)) + "-" + Number(t.substr(12, 2)), r = new Date(u.replace(/-/g, "/")), u != r.getFullYear() + "-" + (r.getMonth() + 1) + "-" + r.getDate()))
                    return !1;
                for (i = 17; i >= 0; i--)
                    f += Math.pow(2, i) % 11 * parseInt(t.charAt(17 - i), 11);
                return f % 11 != 1 ? !1 : !0
            };
            return n.length == 15 ? t(r(n)) : t(n)
        },getChineseNum: function(n) {
            return n.length - n.replace(/[\u4e00-\u9fa5]/g, "").length
        },trimLeft: function(n) {
            return n.replace(/^\s+/, "")
        },trimRight: function(n) {
            return n.replace(/\s+$/, "")
        },trim: function(n) {
            return this.trimRight(this.trimLeft(n))
        }}, n.fn.relCenter = function(t) {
        var r = {offset: [0, 0],scrollFix: !1,scrollAni: !1,speed: 600,easing: "linear"}, i = n.extend({}, r, t);
        return this.each(function() {
            function o() {
                i.scrollFix ? r.css({left: f + "px",top: e + "px"}) : r.css({left: f + "px",top: e + "px"})
            }
            var r = n(this), t = [n(window).width(), n(window).height()], u = [r.outerWidth(), r.outerHeight()], f = (t[0] - (u[0] + i.offset[0] * 2)) / 2, e = (t[1] - (u[1] + i.offset[1] * 2)) / 2;
            o(), n(window).resize(function() {
                t = [n(window).width(), n(window).height()], f = (t[0] - (u[0] + i.offset[0] * 2)) / 2, e = (t[1] - (u[1] + i.offset[1] * 2)) / 2, o()
            })
        })
    }, n.iStorage = {isSupport: function() {
            return typeof localStorage != "undefined" ? !0 : !1
        },getOne: function(n) {
            return this.isSupport ? this.hasKey(n) ? localStorage.getItem(n) : !1 : !1
        },insert: function(t, i) {
            if (!this.isSupport)
                return !1;
            if (n.isArray(t))
                for (var r = 0; r < i.length; r++)
                    localStorage.setItem(t[r], i[r]);
            else
                localStorage.setItem(t, i)
        },deleteOne: function(n) {
            if (!this.isSupport)
                return !1;
            localStorage.removeItem(n)
        },clear: function() {
            if (!this.isSupport)
                return !1;
            if (confirm("确定清空缓存？"))
                localStorage.clear();
            else
                return !1
        },hasKey: function(n) {
            return this.isSupport ? typeof localStorage.getItem(n) != "undefined" ? !0 : !1 : !1
        }}, n.fn.tpwbMarquee = function(t) {
        var r = {direction: "x",speed: 5,subWidth: 0,subHeight: 0,loop: !0,noGap: !0}, i = n.extend({}, r, t);
        return this.each(function() {
            function p() {
                if (i.noGap) {
                    var u = t.clone();
                    t.after(u);
                    switch (r) {
                        case "x":
                            t.css({width: o * h + "px",height: s + "px"});
                            break;
                        case "y":
                            t.css({width: o + "px",height: s * h + "px"});
                            break;
                        default:
                            t.css({width: o * h + "px",height: s + "px"})
                    }
                } else
                    switch (r) {
                        case "x":
                            t.css({width: o * h + "px",height: s + "px"});
                            break;
                        case "y":
                            t.css({width: o + "px",height: s * h + "px"});
                            break;
                        default:
                            t.css({width: o * h + "px",height: s + "px"})
                    }
                switch (r) {
                    case "x":
                        f = setInterval(l, e), c.bind({mouseenter: function() {
                                clearInterval(f), n(".tpwb_marquee_shadow").fadeOut()
                            },mouseleave: function() {
                                f = setInterval(l, e), n(".tpwb_marquee_shadow").fadeIn()
                            }});
                        break;
                    case "y":
                        f = setInterval(v, e), c.bind({mouseenter: function() {
                                clearInterval(f), n(".tpwb_marquee_shadow").fadeOut()
                            },mouseleave: function() {
                                f = setInterval(v, e), n(".tpwb_marquee_shadow").fadeIn()
                            }});
                        break;
                    default:
                        f = setInterval(l, e), c.bind({mouseenter: function() {
                                clearInterval(f), n(".tpwb_marquee_shadow").fadeOut()
                            },mouseleave: function() {
                                f = setInterval(l, e), n(".tpwb_marquee_shadow").fadeIn()
                            }})
                }
            }
            function l() {
                u = u <= t.width() ? u + 1 : 0, t.css({"margin-left": "-" + u + "px"})
            }
            function v() {
                u = u <= t.height() ? u + 1 : 0, t.css({"margin-top": "-" + u + "px"})
            }
            var c = n(this), e = i.speed, r, o, s;
            e = e * 10, r = i.direction, r = r.toLocaleLowerCase(), r = r.replace(/\s\d/g, ""), r == "" && (r = "x");
            var f = null, y = c.find(".tpwb_marquee_list:first"), t = y.find("table:first"), a = t.find("tr"), h = a.length, u = 0;
            o = i.subWidth !== 0 ? i.subWidth : a.outerWidth(!0), s = i.marqueeSubHeight !== 0 ? i.marqueeSubHeight : a.outerHeight(!0), p()
        })
    }, n.fn.tpAccordion = function() {
        return this.each(function() {
            var t = n(this), i = t.find(".accordion_header:first"), r = t.find(".accordion_body:first");
            i.bind({click: function() {
                    r.slideToggle()
                }})
        })
    }, n.tpwbFixController = {options: {autoShow: !1,flip: "display",speed: 300,axis: "y",easing: "linear",offset: 20,classSet: {fixcontroller: "",controller: "",closeBtn: ""},callBack: {beforeInit: function() {
                },afterInit: function() {
                },beforeShow: function() {
                },afterShow: function() {
                },beforeHide: function() {
                },afterHide: function() {
                }}},_init: function(t, i) {
            var u = this, r = {};
            return i.callBack.beforeInit(), r.options = i, r.cItem = t, r.isShow = !1, r.itemCss = {}, r.itemCss.width = r.cItem.outerWidth(), r.itemCss.height = r.cItem.outerHeight(), r.itemCss.left = r.cItem.css("margin-left"), r.itemCss.top = r.cItem.css("margin-top"), r.fixcontroller = n("#fixcontroller")[0] ? n("#fixcontroller") : n("<div>").addClass("full_width fixed " + i.classSet.fixcontroller).attr("id", "fixcontroller").css({display: "none"}).appendTo("body"), r.controller = n("<div>").addClass("controller_item " + i.classSet.controller).css({width: r.itemCss.width + "px",height: r.itemCss.height + "px",left: r.itemCss.left,top: r.itemCss.top,display: "none"}).appendTo(r.fixcontroller), r.cItem.css({margin: "0px"}).appendTo(r.controller), r.closeBtn = n('<div><a href="javascript:void(0);">关闭</a></div>').addClass("close " + i.classSet.closeBtn).appendTo(r.controller), r.controller.bind({show: function() {
                    u._show(r)
                },hide: function() {
                    u._hide(r)
                },toggle: function() {
                    r.isShow ? u._hide(r) : u._show(r)
                }}), r.closeBtn.bind({click: function() {
                    u._hide(r)
                }}), i.autoShow && r.controller.trigger("show"), i.callBack.afterInit(r), r
        },_show: function(n) {
            var i = this, t = n.options;
            if (!n.isShow) {
                n.isShow = !0;
                switch (t.flip) {
                    case "slide":
                        i._slide(n, !0);
                        break;
                    case "fade":
                        t.callBack.beforeShow(n), n.fixcontroller.show(), n.controller.fadeIn(t.speed, function() {
                            t.callBack.afterShow(n)
                        });
                        break;
                    case "display":
                    default:
                        t.callBack.beforeShow(n), n.fixcontroller.show(), n.controller.show(), t.callBack.afterShow(n)
                }
            }
        },_hide: function(n) {
            var i = this, t = n.options;
            if (n.isShow) {
                n.isShow = !1;
                switch (t.flip) {
                    case "slide":
                        i._slide(n, !1);
                        break;
                    case "fade":
                        t.callBack.beforeHide(n), n.fixcontroller.hide(), n.controller.fadeOut(t.speed, function() {
                            t.callBack.afterHide(n)
                        });
                        break;
                    case "display":
                    default:
                        t.callBack.beforeHide(n), n.fixcontroller.hide(), n.controller.hide(), t.callBack.afterHide(n)
                }
            }
        },_slide: function(n, t) {
            var r = {}, i = n.options;
            if (r.fcSize = {w: n.fixcontroller.width(),h: n.fixcontroller.height()}, r.cSize = {w: n.controller.outerWidth(),h: n.controller.outerHeight()}, t) {
                n.fixcontroller.show();
                switch (i.axis) {
                    case "x":
                        i.callBack.beforeShow(n), n.controller.css({left: "-" + parseInt(r.cSize.w + i.offset) + "px"}).stop(!0, !1).fadeIn().dequeue().animate({left: n.itemCss.left}, i.speed, i.easing, function() {
                            i.callBack.afterShow(n)
                        });
                        break;
                    case "y":
                    default:
                        i.callBack.beforeShow(n), n.controller.css({top: "-" + parseInt(r.cSize.h + i.offset) + "px"}).stop(!0, !1).fadeIn().dequeue().animate({top: n.itemCss.top}, i.speed, i.easing, function() {
                            i.callBack.afterShow(n)
                        })
                }
            } else
                switch (i.axis) {
                    case "x":
                        i.callBack.beforeHide(n), n.controller.stop(!0, !1).fadeOut().dequeue().animate({left: parseInt(r.fcSize.w + i.offset) + "px"}, i.speed, i.easing, function() {
                            n.fixcontroller.hide(), i.callBack.afterHide(n)
                        });
                        break;
                    case "y":
                    default:
                        i.callBack.beforeHide(n), n.controller.stop(!0, !1).fadeOut().dequeue().animate({top: parseInt(r.fcSize.h + i.offset) + "px"}, i.speed, i.easing, function() {
                            n.fixcontroller.hide(), i.callBack.afterHide(n)
                        })
                }
        }}, n.fn.tpwbFixController = function(t) {
        return this.each(function() {
            var u = n(this), r = null, i = u.data("fixcontroller") !== "undefined" ? u.data("fixcontroller") : !1;
            r = i ? i.options : typeof t == "string" ? n.tpwbFixController.options : n.extend(!0, {}, n.tpwbFixController.options, t), typeof t == "string" ? i.controller.trigger(t) : i = n.tpwbFixController._init(u, r), u.data("fixcontroller", i)
        })
    }, n.fn.tpwbFocusText = function(t) {
        var r = {baseText: "",baseColor: "#999999",focusColor: "#666666"}, i = n.extend(!0, {}, r, t);
        return this.each(function() {
            function r(n) {
                var r = t.val();
                switch (n) {
                    case 0:
                        r !== "" && r !== i.baseText ? t.css({color: i.focusColor}) : t.val(i.baseText).css({color: i.baseColor});
                        break;
                    case 1:
                        r !== "" && r !== i.baseText ? t.css({color: i.focusColor}) : t.val("").css({color: i.focusColor});
                        break;
                    default:
                        return !1
                }
            }
            var t = n(this);
            if (parseInt(i.baseText) == 0)
                return !1;
            r(0);
            t.on({focus: function() {
                    r(1)
                },blur: function() {
                    r(0)
                }})
        })
    }, n.fn.toggleList = function() {
        return this.each(function() {
            var u = n(this), r = u.find(".item"), f = r.find(".tli_header:first"), t = r.find(".tli_content:first"), i = null;
            f.on({click: function(r) {
                    r.preventDefault() && r.preventDefault, i = n(this).parent(".item"), t = n(this).siblings(".tli_content:first"), t.is(":visible") ? (i.removeClass("current"), t.stop(!0, !1).slideUp()) : (i.addClass("current"), t.stop(!0, !1).slideDown())
                }})
        })
    }, n.fn.relCenters = function(t) {
        var i = n.extend(!0, {}, {axis: "all",parent: window,offset: 0}, t);
        return this.each(function() {
            function s(n, i, u, f) {
                switch (n) {
                    case "all":
                        r == "absolute" || r == "fixed" ? t.css({left: (u[0] - i[0]) / 2 - (f[1] + f[3]) + "px",top: (u[1] - i[1]) / 2 - (f[0] + f[2]) + "px"}) : t.css({"margin-left": (u[0] - i[0]) / 2 - (f[1] + f[3]) + "px","margin-top": (u[1] - i[1]) / 2 - (f[0] + f[2]) + "px"});
                        break;
                    case "x":
                        r == "absolute" || r == "fixed" ? t.css({left: (u[0] - i[0]) / 2 - (f[1] + f[3]) + "px"}) : t.css({"margin-left": (u[0] - i[0]) / 2 - (f[1] + f[3]) + "px"});
                        break;
                    case "y":
                        r == "absolute" || r == "fixed" ? t.css({top: (u[1] - i[1]) / 2 - (f[0] + f[2]) + "px"}) : t.css({"margin-top": (u[1] - i[1]) / 2 - (f[0] + f[2]) + "px"});
                        break;
                    default:
                        r == "absolute" || r == "fixed" ? t.css({left: (u[0] - i[0]) / 2 - (f[1] + f[3]) + "px",top: (u[1] - i[1]) / 2 - (f[0] + f[2]) + "px"}) : t.css({"margin-left": (u[0] - i[0]) / 2 - (f[1] + f[3]) + "px","margin-top": (u[1] - i[1]) / 2 - (f[0] + f[2]) + "px"})
                }
            }
            function h(t) {
                var r = [], i;
                if (n.isArray(t))
                    r = t;
                else
                    for (t = parseInt(t) == "NaN" ? 0 : parseInt(t), i = 0; i < 4; i++)
                        r[i] = t;
                return r
            }
            var t = n(this), f = h(i.offset), e = [t.outerWidth(), t.outerHeight()], u = u == window ? n(window) : t.parent(), o = [u.width(), u.height()], r = t.css("position");
            s(i.axis, e, o, f), u.bind({resize: function() {
                    parSize = [u.width(), u.height()], s(i.axis, e, o, f)
                }})
        })
    }
}(jQuery), function(n) {
    n.fn.passwordBack = function() {
        return this.each(function() {
            function c() {
                o.inputTextHide("请输入用户名"), e.inputTextHide("请输入注册邮箱找回密码"), t.css({left: (n(window).width() - t.width()) / 2}), n(window).resize(function() {
                    t.css({left: (n(window).width() - t.width()) / 2})
                })
            }
            function v() {
                t.addClass(u), t.stop(!0, !1).animate({top: "100px"}).dequeue().fadeIn(), s.stop(!0, !1).fadeIn()
            }
            function i() {
                t.removeClass(u), t.stop(!0, !1).animate({top: "200px"}).dequeue().fadeOut(), s.stop(!0, !1).fadeOut()
            }
            var b = n(this), s = n("#base_mask"), t = n("#pass_back"), h = n("#pb_form"), r = n("#pb_tips"), p = n("#pb_tips_success"), y = n("#pb_tips_fail"), f = n("#pb_tips_loading"), a = n("#pb_form_submit"), w = n("#pb_tips_confirm"), o = n("#gUserName"), e = n("#gEmail"), l = r.find(".pb_tips_content"), u = "showed";
            c(), b.bind({click: function() {
                    var n = t.hasClass(u);
                    n ? i() : v()
                }}), a.unbind().bind({click: function() {
                    var i = o.val(), t = e.val(), u;
                    if ((i == "" || i == "请输入用户名") && (t == "" || t == "请输入注册邮箱找回密码"))
                        return o.parent().formMesg(0, "用户名和邮箱不能都为空！"), !1;
                    if (t != "" && t != "请输入注册邮箱找回密码" && !n.stringOption.isMail(t))
                        return e.parent().formMesg(0, "邮箱格式不正确，请重新填写！"), !1;
                    h.hide(), r.show(), f.show(), u = {userName: i,email: t}, ctx.postToken("index.php?ac=login&op=find_password", u, function(t) {
//                        t.indexOf("@") != -1 ?(n("#gotoEmail").attr("href", getEmailHost(t)), f.hide(), p.show()) : (f.hide(), y.show())
                    	t.email.indexOf("@") != -1 ?(n("#gotoEmail").attr("href", "index.php?ac=login&op=changepw&token="+t.token), f.hide(), p.show()) : (f.hide(), y.show())
                    })
                }}), w.bind({click: function() {
                    c(), h.show(), r.hide(), l.hide(), i()
                }}), t.find(".close").bind({click: function() {
                    i()
                }})
        })
    }
}(jQuery), $(window).load(function() {
    $("#base_loading").stop(!0, !1).fadeOut(), $("body").addClass("body_loaded")
}), $(document).ready(function() {
    function t() {
        if ($("#username").val() == "")
            return $("#username").parent().parent().formMesg(0, "用户名不能为空，请重新填写！"), $("#username").focus(), !1;
        if ($("#password").val() == "")
            return $("#password").parent().parent().formMesg(0, "密码不能为空！"), $("#password").focus(), !1;
        if ($("#password").val().length < 6)
            return $("#password").parent().parent().formMesg(0, "密码长度不足6位！"), $("#password").focus(), !1;
        if ($("#vercode").val() == "")
            return $("#vercode").parent().parent().formMesg(0, "验证码不能为空！"), $("#vercode").focus(), !1;
        if (n)
            return !1;
        $("#login_submit").css("cursor", "wait"), n = !0;
        var t = {username: $("#username").val(),password: $("#password").val(),nchash: $("#nchash").val(),captcha: $("#vercode").val(),form_submit: 'ok'};
        ctx.postTokenEx({url: "index.php?ac=login",data: t,complete: function() {
            },success: function(t) {
                var i = !1;
                t == "suc" ? (i = !0, window.location.href = "index.php#LotteryHall") : t == "verCodefail" ? ($("#vercode").parent().parent().formMesg(0, "请输入正确的验证码！"), ChangeCode(), $("#vercode").val(), $("#vercode").focus()) : t == "fail" ? ($("#username").parent().parent().formMesg(0, "请输入正确的用户名和密码！"), ChangeCode(), $("#username").focus()) : t == "noValidate" ? ($("#username").parent().parent().formMesg(0, "您尚未通过注册验证！"), ChangeCode(), $("#username").focus()) : t == "freeze" && ($("#username").parent().parent().formMesg(0, "您的帐户已经被冻结，请联系客服！"), ChangeCode(), $("#username").focus()), i || (n = !1, $("#login_submit").css("cursor", "pointer"))
            }})
    }
    function i() {
        var t, r;
		/*
        if ($("#IntrCookie").val() == "")
            return $("#IntrCookie").parent().parent().formMesg(0, "推广链接失效，介绍人不能为空！"), $("#IntrCookie").focus(), !1;
		*/
        if ($("#username").val() == "")
            return $("#username").parent().parent().formMesg(0, "用户名不能为空，请重新填写！"), $("#username").focus(), !1;
        if (t = /^[A-Za-z\u4e00-\u9fa5][A-Za-z0-9\u4e00-\u9fa5]{3,11}$/, !t.test($("#username").val()))
            return $("#username").parent().parent().formMesg(0, "用户名不合法，请重新填写！"), $("#username").focus(), !1;
        if ($("#password").val() == "")
            return $("#password").parent().parent().formMesg(0, "密码不能为空！"), $("#password").focus(), !1;
        if ($("#password").val().length < 6)
            return $("#password").parent().parent().formMesg(0, "密码长度不足6位！"), $("#password").focus(), !1;
        if (!$("#password").val().IsPassStrong())
            return $("#password").parent().parent().formMesg(0, "密码必须包含字母数字或是特殊符号！"), $("#password").focus(), !1;
        if ($("#password_confirm").val() != $("#password").val())
            return $("#password_confirm").parent().parent().formMesg(0, "密码不一致，请重新输入！"), $("#password").focus(), !1;
        if ($("#email").val() == "")
            return $("#email").parent().parent().formMesg(0, "邮箱不能为空！"), $("#email").focus(), !1;
        if (!$.stringOption.isMail($("#email").val()))
            return $("#email").parent().parent().formMesg(0, "邮箱格式不正确，请重新填写！"), $("#email").focus(), !1;
        if ($("#vercode").val() == "")
            return $("#vercode").parent().parent().formMesg(0, "验证码不能为空！"), $("#vercode").focus(), !1;
        if (n)
            return !1;
        $("#submitRegiest").css("cursor", "wait"), n = !0, r = {Username: $("#username").val(),IntrCookie: $("#IntrCookie").val(),UserPassword: $("#password").val(),Email: $("#email").val(),Phone: $("#phone").val(),vercode: $("#vercode").val(),LinkId: $("#linkId").val()}, $.bodyMsg({msg: "正在提交表单，请稍候..."}), $("#submitRegiest").unbind("click"), ctx.postToken("index.php?ac=login&op=userSave", r, function(t) {
            $("#body_message").remove(), $("#submitRegiest").click(i);
            var r = !1;
			t.Key == "success" ? (r = !0, window.location.href = "index.php?ac=login&op=register&type=1"): ($.bodyMsg({msg: t.Value})),r || (n = !1, $("#submitRegiest").css("cursor", "pointer"));
			/*
            t == "intrfail" ? ($("#IntrCookie").removeAttr("readonly"), $("#IntrCookie").parent().parent().formMesg(0, "请填写正确的介绍人ID！"), $("#IntrCookie").focus(), ChangeCode()) : t != "verCodefail" && t.ErrNum != 0 ? (t.ErrNum == 19 ? ($("#email").parent().parent().formMesg(0, t.Message), $("#email").focus()) : ($("#username").parent().parent().formMesg(0, t.Message), $("#username").focus()), ChangeCode()) : t == "verCodefail" ? ($("#vercode").parent().parent().formMesg(0, "验证码不正确,请重新输入！"), $("#vercode").focus(), ChangeCode()) : (r = !0, window.location.href = "/Home/VaildComplete/1"), r || (n = !1, $("#submitRegiest").css("cursor", "pointer"))*/
        })
    }
    function r() {
        if ($("#password").val() == "")
            return $("#password").parent().parent().formMesg(0, "密码不能为空！"), $("#password").focus(), !1;
        if ($("#password").val().length < 6)
            return $("#password").parent().parent().formMesg(0, "密码长度不足6位！"), $("#password").focus(), !1;
        if (!$("#password").val().IsPassStrong())
            return $("#password").parent().parent().formMesg(0, "密码必须包含字母数字或是特殊符号！"), $("#password").focus(), !1;
        if ($("#password_confirm").val() != $("#password").val())
            return $("#password_confirm").parent().parent().formMesg(0, "密码不一致，请重新输入！"), $("#password").focus(), !1;
        var n = {userToken: $("#token").val(),password: $("#password").val(),confirmPassword: $("#password_confirm").val()};
        $.bodyMsg({msg: "正在提交表单，请稍候..."}), $("#submitChangePassword").unbind("click"), ctx.postToken("index.php?ac=login&op=ChangePasswordByToken", n, function(n) {
            $("#body_message").remove(), $("#submitChangePassword").click(r), n == "suc" ? ($.bodyMsg({msg: "密码修改成功，请使用新密码重新登录"}), setTimeout(function() {
                window.location.href = "index.php?ac=login"
            }, 3e3)) : n == "timeout" ? $.bodyMsg({msg: "您的操作已经超过五分钟，请在登录页点击‘忘记密码’重新获取密码重置地址！"}) : $.bodyMsg({msg: n})
        })
    }
    function u() {
        var n = $("#userName").val(), t = $("#ev_code").val(), i;
        if (n == "") {
            $.bodyMsg({msg: "页面已经过期！"});
            return
        }
        if (t == "") {
            $.bodyMsg({msg: "验证码不能为空！"});
            return
        }
        i = {username: n,validCode: t}, $.bodyMsg({msg: "正在提交表单，请稍候..."}), $("#submitVaildCode").unbind("click"), ctx.postToken("/Home/ValidUserByCode", i, function(n) {
            $("#body_message").remove(), $("#submitVaildCode").click(u), n == "timeout" ? $.bodyMsg({msg: "验证码已经超时，请重新获取！"}) : n == "fail" ? $.bodyMsg({msg: "验证码有误,请重新输入！"}) : n == "suc" && (window.location.href = "/Home/VaildComplete/1")
        })
    }
    function f() {
        var n = $("#userName").val(), t = {username: n};
        $.bodyMsg({msg: "正在发送验证码,请稍候..."}), $("#getVaildCode").unbind("click"), ctx.postToken("/Home/GetValidCodeByUserName", t, function(n) {
            $("#body_message").remove(), $("#getVaildCode").click(f), n == "fail" ? $.bodyMsg({msg: "获取验证码有误！"}) : n == "suc" && ($.bodyMsg({msg: "验证码已经发送到您的邮箱！"}), initTimer())
        })
    }
    $("#forget_pass").passwordBack(), $(".login_cont:first").relCenters({offset: [100, 0, 0, 0]}), $("#mobile_login_tutorial").tpwbFixController({flip: "slide",classSet: {fixcontroller: "cp_controller",controller: "cp_controller_ani"},callBack: {beforeShow: function(n) {
                setTimeout(function() {
                    n.controller.removeClass("cp_controller_ani")
                }, 1)
            },beforeHide: function(n) {
                n.controller.addClass("cp_controller_ani")
            }}}), $("#show_mobile_login_type").bind({click: function() {
            $("#mobile_login_tutorial").tpwbFixController("show")
        }}), $(".toggle_list").toggleList(), $(".nav-sub-cont").tpwbFixController({flip: "display",classSet: {fixcontroller: "cp_controller"}});
    $("#nav-sub a").on({click: function(n) {
            n.preventDefault();
            var t = $(this), i = t.attr("id").substr(3);
            $("#" + i).tpwbFixController("show")
        }});
    $("#username").bind({keyup: function() {
            $(this).parent().parent().find(".form_msg").remove()
        }}), $("#password").bind({keyup: function() {
            $(this).parent().parent().find(".form_msg").remove()
        }}), $("#vercode").bind({keyup: function() {
            $(this).parent().parent().find(".form_msg").remove()
        }}), $("#vercode").keyup(function(n) {
        n.which == 13 && t()
    });
    var n = !1;
    $("#login_submit").click(t), $("#submitRegiest").click(i), $("#submitChangePassword").click(r), $("#submitVaildCode").click(u), $("#getVaildCode").click(f), $(".form_text").each(function() {
        var n = $(this), t = n.find("input:first");
        t.bind({focus: function() {
                n.addClass("form_text_focus")
            },blur: function() {
                n.removeClass("form_text_focus")
            }})
    }), $("#show_clause").bind("click", function() {
        $("#clause").slideToggle()
    }), $("#password").passStrength("#password_ps")
})
